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

时间:2016-12-16 02:07:36

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

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

  

当前的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,或者以另一种方式公开,只显示具有相应存储库类的实体。其余的域模型对象是导航属性,因此不需要通过DbSet公开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

1 个答案:

答案 0 :(得分:4)

您正在使用.NET Core 1.1运行时但是旧的工具包(您应该使用最新的工具,截至此日期它是 preview4 ,它仍然在 alpha < / em>,与运行时相反 - 是的,起初不是很直观

总之,这是一个Known Issue

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

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

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

{
  "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"
  }
}

explained in Hanselman's blog