在 EF Core 中选择字符串的更简单方法?

问题描述 投票:0回答:1

我想得到

@@SERVERNAME
的值。以下代码有效:

[Keyless]
public class EntityString
{
    public String Value { get; set; } = String.Empty;
};

// inside MyDbContext.OnModelCreating
modelBuilder.Entity<EntityString>();

// inside MyDbContext
public IQueryable<EntityString> QueryServerName()
     => Set<EntityString>().FromSqlRaw("SELECT @@SERVERNAME as Value");

// At usage site
ServerName = (await WHContext.QueryServerName().FirstAsync()).Value

然而,对于简单的任务来说,它似乎过于复杂。有没有更简单的方法来执行预计返回单个字符串值的

SELECT
查询?

使用

String
而不是
EntityString
会产生需要实体类的运行时错误。

c# asp.net entity-framework-core
1个回答
0
投票

以下更改有效:

// In MyDbContext class
public IQueryable<EntityString> QueryServerName()
     => Database.SqlQueryRaw<String>("SELECT @@SERVERNAME as Value").AsQueryable();

// usage 
ServerName = await MyContext.QueryServerName().FirstAsync();

使用

SqlQuery
会出现错误,无法将
string
转换为
FormattableString

从查询字符串中省略

as Value
会产生运行时错误
"No column name was specified for column 1 of 't'. Invalid column name 'Value'."

© www.soinside.com 2019 - 2024. All rights reserved.