EF 6带有dnx项目

我有一个新的ASP.net 5 dnx类库,我用于entity framework。 我需要针对EF 6,因为我需要的一些function不在EF 7中。

首先,EF工具(如启用迁移)不存在。 我添加了一个旧的样式类库并安装了EF 6,现在命令就在那里。

当我运行启用迁移时,我收到此错误:

PM>启用 – 迁移

使用“2”参数调用“SetData”的exception:“在程序集中键入’Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject’,Microsoft.VisualStudio.ProjectSystem.VS.Implementation,Version = 14.1。 0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’未标记为可序列化。“ 在D:\ Projects \ Rebus \ FMS \ Code \ Current \ FMSSupport \ FMSSupport \ packages \ EntityFramework.6.1.3 \ tools \ EntityFramework.psm1:720 char:5 + $ domain.SetData(’startUpProject’,$ startUpProject)+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:SerializationException System.NullReferenceException:未将对象引用设置为对象的实例。 在System.Data.Entity.Migrations.Migrations.Migrations.Migrations.Exject上的System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(项目项目,Int32 shellVersion)处于System.Data.Entity.Migrations.MigrationsDomainCommand的System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(项目项目)。 SystemF上的System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName)中的GetFacade(String configurationTypeName,Boolean useContextWorkingDirectory)System.Data上的System.Data.Entity.Migrations.EnableMigrationsCommand。 c__DisplayClass2。 b__0() .Entity.Migrations.MigrationsDomainCommand.Execute(Action command)对象引用未设置为对象的实例。

我尝试了不同的启用迁移选项,例如指定启动项目或contextTypeName。

有任何想法吗?

遵循此建议 ,EF6数据项目应使用现有的.NET Framework类库csproj类型。

即使按照建议,我仍然得到同样的错误。 卸载ASP.NET Core项目,然后在相应的csproj上调用Enable-Migrations命令应该允许该命令执行。 您可以通过右键单击.NET Core项目并选择“卸载项目”选项来卸载项目。 还应注意,程序包管理器控制台窗口具有“默认项目:”下拉选项。 您应该使用DbContext选择项目。

这是因为ASP.NET Core引入了一个新的项目类型/配置系统(参见package.config vs project.json ),旧的EF工具不知道如何使用较新的系统(project.json)。 如果你想回到EF6,最简单的方法是创建一个新项目并将代码移植到其中。

有趣的是(好吧,令人失望的是)他们正在回溯项目。参见: http : //xoofx.com/blog/2016/05/11/goodbye-project-json/

我遇到过同样的问题。 只需将启动项目从ASP.NET Core设置为我的.NET Framework Lib就可以了。=)现在我可以照常进行EF6迁移“Add-Migration”命令……

PS对不起我的工程师。