EF Core 1.1遷移 - 當前的CSharpHelper不能支持類型的文字

.net .net-core c# entity-framework 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公開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 ,與運行時相反 - 是的,起初不是很直觀

總之,這是一個已知問題

"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代碼項目佈局



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow