无法在Entity Framework中读取系统视图

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注入安全的.

Aka*_*ava 1

系统视图没有问题,实体框架无法读取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)