EF Core 1.1迁移 – 当前的CSharpHelper不能支持类型的文字

这似乎是一个非常模糊的错误,我甚至不知道从哪里开始……

当前的CSharpHelper不能支持’System.Func`3 [Microsoft.EntityFrameworkCore.Metadata.IProperty,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.ValueGeneration.ValueGenerator]’类型的文字。 配置您的服务以使用可以的服务。

这是在我跑的时候发生的

dotnet ef migrations add initial 

更新1 – 基于Rob的问题

应用程序的体系结构使用了丰富的域模型,因此有一些“解决方法”可以获取封装集合等内容,而Jimmy Bogard的类型枚举模式也可以使用。

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

DbContext仅为聚合根实体公开DbSet ,或者以另一种方式公开,只显示具有相应存储库类的实体。 其余的域模型对象是导航属性,因此不需要通过DbContext公开DbContext

平台细节(据我所知)

  • .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 ,与运行时相反 – 是的,起初不是很直观

总之,这是一个已知问题

  • 更新project.json以使用预告 entity framework核心1.1中所述的preview4
 "tools": { "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4" } 
  • 您可能,或者可能不需要通过在src文件夹上方使用global.json来修复SDK版本,该文件夹应该包含您的代码,如Hanselman的博客中所述
 { "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代码项目布局