8

我刚刚创建了一个新的服务结构服务,它将定期尝试使用实体框架和弹性客户端数据库库将一些模型保存到 SQL Azure。我正在尝试尽可能将其建模为 SQL Azure Elastic Sc​​ale Client Library EF 示例(Elastic DB Tools EF 示例)。我正处于需要启用迁移的地步,但是当我运行 Enable-Migrations 时,我收到以下错误消息。我正在使用 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.
4

3 回答 3

7

我通过使用 db 上下文为我的 .NET 框架 dll 指定命令-StartUpProjectName参数解决了相同的异常问题。Enable-Migrations问题可能与奇怪的启动项目有关 - .IsWebProject() 中的问题(在我的例子中是 asp.core)。请参阅有关使用“2”参数调用“SetData”的 Enable-Migrations Exception 的更多详细答案。

于 2017-02-10T15:55:42.007 回答
2

如果您使用的是 Visual Studio 2019,当您想要添加一个新的类库时,您将面临以下类库:

  1. 类库(.NET 标准)

  2. 类库(.NET 框架)

好吧,我以前选择number1,但现在我知道我犯了错误。

解决方案是选择号码 2。

于 2019-07-13T17:35:07.423 回答
-1

而不是Enable-Migrations这样做EntityFrameworkCore\Enable-Migrations

EntityFrameworkCore\在任何命令之前使用。

PS:使用 VisualStudio 2019

于 2019-09-07T15:38:28.300 回答