EF 6带有dnx项目

时间:2016-01-22 21:16:07

标签: c# asp.net-core entity-framework-6 dnx project.json

我有一个新的ASP.net 5 dnx类库,我用于实体框架。我需要针对EF 6,因为我需要的一些功能不在EF 7中。

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

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

  

PM>启用的迁移

     

异常调用" SetData"用" 2"参数:"类型   ' Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject'   在assembly' Microsoft.VisualStudio.ProjectSystem.VS.Implementation中,   Version = 14.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'是   未标记为可序列化。"在   d:\项目\卤面\ FMS \代码\电流\ FMSSupport \ FMSSupport \包\ EntityFramework.6.1.3 \ TOOLS \ EntityFramework.psm1:720   焦炭:5   + $ domain.SetData(' startUpProject',$ startUpProject)   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜       + CategoryInfo:NotSpecified:(:) [],MethodInvocationException       + FullyQualifiedErrorId:SerializationException System.NullReferenceException:未将对象引用设置为实例   一个对象。在   System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(项目   project,Int32 shellVersion)at   System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(项目   项目)   System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(字符串   configurationTypeName,Boolean useContextWorkingDirectory)at   System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(字符串   contextTypeName)at   System.Data.Entity.Migrations.EnableMigrationsCommand<> c__DisplayClass2< .ctor> b__0()   在   System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(动作   command)对象引用未设置为对象的实例。

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

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我有同样的问题。只需将启动项目从ASP.NET Core设置为我的.NET Framework Lib就可以了。=)现在我可以像往常一样进行EF6迁移" Add-Migration"命令......

P.S。对不起我的工作。