尝试在EF7和ASP.NET5中使用DbSet <TEntity> .Where()

eye*_*aul 2 asp.net-mvc entity-framework visual-studio-2015 coreclr

我已经使用ASP.NET 5 MVC6项目和一些类库创建了一个解决方案.我正在使用Visual Studio 2015,我的目标是"dnxcore50"和"net451".

在类库中,我使用EF7编写存储库代码.在一个类中,我试图在DbSet <>上使用一些方法.即".Where(...)",".Single(...)"和".First(...)".这些可以在旧版本的.NET上获得.

我收到以下2个错误:

.NET Framework 4.5.1错误CS0012:类型"IEnumerable <>"在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.

.NET Framework 4.5.1错误CS0012:类型"Func <,>"在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.

它似乎在DNXCORE50格式中没有问题,但不是.NET的完整4.5.1版本.

我在project.json文件中有这个:

"frameworks": {
    "net451": {
      "dependencies": {
        "System.Runtime": "4.0.21-beta-23516"
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.Runtime": "4.0.21-beta-23516"
        ......
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

我的目标是1.0.0-rc1-final DNX SDK版本.

有任何想法吗?

eye*_*aul 6

好吧,我终于认为我设法找出原因.如果创建类库,则project.json文件具有:

 "net451": { },
Run Code Online (Sandbox Code Playgroud)

在"框架"部分.如果我将其更改为:

"dnx451": { },
Run Code Online (Sandbox Code Playgroud)

它然后工作.我不是百分之百确定这是否会对其他任何事情产生影响.但我现在会用它.