带有 DNX 项目的 EF 6

本文关键字:EF 项目 DNX 带有 | 更新日期: 2023-09-27 18:31:39

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

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

当我运行启用迁移时,出现此错误:

PM>启用迁移

使用"2"参数调用"SetData"的异常:"类型 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' 在汇编'Microsoft.VisualStudio.ProjectSystem.VS.Implementation中, 版本=14.1.0.0,区域性=中性,公钥令牌=b03f5f7f11d50a3a' 是 未标记为可序列化。在 D:''Projects''Rebus''FMS''Code''Current''FMSSupport''FMSSupport''packages''EntityFramework.6.1.3''tools''EntityFramework.psm1:720 字符:5 + $domain。SetData('startUpProject', $startUpProject) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息 : 未指定: (:)[], 方法调用异常 + 完全限定错误 ID:序列化异常系统.空引用异常:对象引用未设置为实例 的对象。 在 System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(Project 项目,Int32 shellVersion) at System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(Project 项目)在 System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory) at System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String 上下文类型名称) 在 System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() 在 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 对象引用未设置为对象的实例。

我尝试了不同的启用迁移选项,例如指定启动项目或上下文类型名称。

有什么想法吗?

带有 DNX 项目的 EF 6

按照此建议,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,则创建新项目并将代码移植到其中可能是最简单的方法。

有趣的是(好吧,实际上令人失望的是)他们在project.json上回溯,请参阅:http://xoofx.com/blog/2016/05/11/goodbye-project-json/

我遇到了同样的问题。 只需将启动项目从 ASP.NET Core设置为我的.NET Framework Lib即可为我解决问题=)现在我可以像往常一样进行EF6迁移"添加迁移"命令...

附言对不起我的英语。