启用迁移 "Object reference not set to an instance of an object"
Enable-Migrations "Object reference not set to an instance of an object"
我刚刚创建了一个新的服务结构服务,它将定期尝试使用 Entity Framework 和弹性客户端数据库库将一些模型保存到 SQL Azure。我正在尝试尽可能接近 SQL Azure Elastic Scale Client Library EF 示例 (Elastic DB Tools EF Sample) 对其进行建模。我正处于需要启用迁移的地步,但是当我 运行 启用迁移时,我收到以下错误消息。我正在使用 ContextTypeName 参数,因为如果我最终要使用不同的服务结构服务针对具有不同模型的同一数据库,这听起来像是必需的。有什么建议吗?
PM> Enable-Migrations -ContextTypeName "ServiceHealth.DbService"
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.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is
not marked as serializable."
At C:\eNowCloud\eNow.MicroServices\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.
我通过将 Enable-Migrations
命令的 -StartUpProjectName
参数指定到我的带有数据库上下文的 .NET 框架 dll 来解决了同样的异常问题。问题可能与奇怪的启动项目有关 - .IsWebProject() 中的问题(asp.core 在我的例子中)。在 .
上查看更多详细答案
如果您使用的是 visual studio 2019,当您想要添加新的 class 库时,您会遇到 class 库:
Class 库(.NET 标准)
Class 库(.NET 框架)
好吧,我以前选了1号,但现在我知道我错了。
解决方法是选择number2。
而不是Enable-Migrations
这样做EntityFrameworkCore\Enable-Migrations
在任何命令前使用 EntityFrameworkCore\
。
PS:使用 VisualStudio 2019
我刚刚创建了一个新的服务结构服务,它将定期尝试使用 Entity Framework 和弹性客户端数据库库将一些模型保存到 SQL Azure。我正在尝试尽可能接近 SQL Azure Elastic Scale Client Library EF 示例 (Elastic DB Tools EF Sample) 对其进行建模。我正处于需要启用迁移的地步,但是当我 运行 启用迁移时,我收到以下错误消息。我正在使用 ContextTypeName 参数,因为如果我最终要使用不同的服务结构服务针对具有不同模型的同一数据库,这听起来像是必需的。有什么建议吗?
PM> Enable-Migrations -ContextTypeName "ServiceHealth.DbService"
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.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is
not marked as serializable."
At C:\eNowCloud\eNow.MicroServices\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.
我通过将 Enable-Migrations
命令的 -StartUpProjectName
参数指定到我的带有数据库上下文的 .NET 框架 dll 来解决了同样的异常问题。问题可能与奇怪的启动项目有关 - .IsWebProject() 中的问题(asp.core 在我的例子中)。在
如果您使用的是 visual studio 2019,当您想要添加新的 class 库时,您会遇到 class 库:
Class 库(.NET 标准)
Class 库(.NET 框架)
好吧,我以前选了1号,但现在我知道我错了。
解决方法是选择number2。
而不是Enable-Migrations
这样做EntityFrameworkCore\Enable-Migrations
在任何命令前使用 EntityFrameworkCore\
。
PS:使用 VisualStudio 2019