c# - EF Core 1.1 迁移 - 当前的 CSharpHelper 无法构建类型文字

标签 c# .net entity-framework .net-core entity-framework-core

这似乎是一个非常晦涩的错误,我什至不知道从哪里开始......

The current CSharpHelper cannot scaffold literals of type 'System.Func`3[Microsoft.EntityFrameworkCore.Metadata.IProperty,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.ValueGeneration.ValueGenerator]'. Configure your services to use one that can.

这是我运行时发生的

dotnet ef migrations add initial

更新 1 - 基于 Rob 的问题

应用程序的体系结构使用丰富的域模型,因此有一些“解决方法”可以使封装集合和 Jimmy Bogard 的类型化枚举模式等功能正常工作。

每个域模型对象在数据访问层中都有自己的 EntityTypeBuilder 类,所有这些类都是从 DbContext 中的 OnModelCreating 调用的。这些还会向控制台输出一些信息,因此我可以看到构建器没有导致任何错误(此时没有任何错误)。

DbContext 仅公开聚合根实体的 DbSet,或者换句话说,仅公开具有相应存储库类的实体。其余的域模型对象是导航属性,因此不需要通过 DbContext 公开 DbSet

平台细节(据我所知)

  • .NET Core 1.1(运行时 + SDK)
  • EF Core 1.1
  • Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final
  • Microsoft.EntityFrameworkCore.Design 1.0.0-preview2-final

最佳答案

您正在使用 .NET Core 1.1 运行时,但使用旧的工具包(您应该使用最新的工具,截至目前它是 preview4,仍处于 alpha/em>,与运行时相反 - 是的,一开始不太直观)

总而言之,这是一个 Known Issue

"tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
}
  • 您可能需要也可能不需要使用 src 文件夹上方的 global.json 来修复 SDK 版本,该文件夹应包含您的代码 explained in Hanselman's blog

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-preview2-1-003177"
  }
}

编辑:只是为了给您一个更完整的答案,这就是我的 project.json 和我的示例项目的样子(全部在 VS Code 中完成):

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.EntityFrameworkCore": "1.1.0-preview1-final",
    "Microsoft.EntityFrameworkCore.Design": "1.1.0-preview1-final",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0-preview1-final",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0-preview1-final",
  },
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
  }
}

VS Code Project Layout

关于c# - EF Core 1.1 迁移 - 当前的 CSharpHelper 无法构建类型文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41176240/

相关文章:

c# - c1.flexgrid 多选行

javascript - 检查 data-val-required 是否存在

c# - EF - 在 HTTP 请求期间创建模型异常时无法使用上下文

c# - EF 代码首先是 : inherited dbcontext creates two databases

c# - 为什么 ReSharper 提示这种 ResourceLoader.GetString 的使用?

c# - 覆盖 List<MyClass> 的 ToString()

c# - AppFapric 是否成熟可用于生产

.net - 从窗口句柄获取窗口 z 索引

c# - 试图了解 .net 中的任务

c# - Entity Framework 在循环集合中返回 NULL