9

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

首先,EF 工具(如 enable-migration)不存在。我添加了一个旧式类库并安装了 EF 6,现在命令就在那里。

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

PM> 启用迁移

使用“2”参数调用“SetData”的异常:“在程序集“Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本=14.1”中键入“Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject”。 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: 对象引用未设置为对象的实例。

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

有任何想法吗?

4

3 回答 3

4

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

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

于 2016-10-11T21:31:33.700 回答
1

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

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

于 2016-07-10T19:12:41.630 回答
0

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

PS对不起我的英语。

于 2017-03-29T13:58:47.527 回答