我有一个新的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。
有什么想法吗?
答案 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。对不起我的工作。