Aka*_*ava 6 .net c# sql entity-framework-6
我正在尝试执行以下查询
SELECT object_id
FROM sys.tables
WHERE sys.tables.name = 'Projects'
Run Code Online (Sandbox Code Playgroud)
如
int n = context.Database.SqlQuery<int>(
"SELECT object_id from sys.tables where sys.tables.name = 'Projects'")
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我总是0得到n
如果我使用SqlConnection
并使用SqlCommand
我查询它得到正确的结果.那么为什么DbContext.Database.Connection
不让我执行一个普通的SQL查询呢?
为简单起见,我删除了SqlParameter
,所以我知道这段代码不是SQL注入安全的.
系统视图没有问题,实体框架无法读取SqlQuery中的值类型。所以我不得不改变它
public class SingleValue<T>{
public T Value {get;set;}
}
int n = context.Database.SqlQuery<SingleValue<int>>(
"SELECT object_id as Value from sys.tables where sys.tables.name = 'Projects'")
.ToList().Select(x=>x.Value).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)