我有一个用于 Entity Framework 的新 ASP.net 5 dnx 类库。我需要以 EF 6 为目标,因为我需要的某些功能不在 EF 7 中。
首先,EF 工具(如启用迁移)不存在。我添加了一个旧式类库并安装了 EF 6,现在命令就在那里。
当我运行启用迁移时出现此错误:
PM> Enable-Migrations
Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=14.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable." At 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: Object reference not set to an instance of an object. at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(Project project, Int32 shellVersion) at System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(Project project) at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory) at System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName) at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) Object reference not set to an instance of an object.
我尝试了不同的启用迁移选项,例如指定启动项目或 contextTypeName。
有什么想法吗?
最佳答案
关注此recommendation , EF6 数据项目应使用现有的 .NET Framework 类库 csproj 类型。
即使遵循了建议,我仍然遇到同样的错误。卸载您的 ASP.NET Core 项目,然后在适当的 csproj 上调用 Enable-Migrations
命令应该允许命令执行。您可以通过右键单击 .NET Core 项目并选择“卸载项目”选项来卸载项目。还应注意,包管理器控制台窗口有一个“默认项目:”下拉选项。您应该使用 DbContext 选择项目。
关于c# - 带有 dnx 项目的 EF 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34956083/