Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VS 2015 ASP.NET Web API(EF6)和;Xamarin启用迁移失败_C#_Entity Framework_Asp.net Web Api_Xamarin.forms_Entity Framework Migrations - Fatal编程技术网

C# VS 2015 ASP.NET Web API(EF6)和;Xamarin启用迁移失败

C# VS 2015 ASP.NET Web API(EF6)和;Xamarin启用迁移失败,c#,entity-framework,asp.net-web-api,xamarin.forms,entity-framework-migrations,C#,Entity Framework,Asp.net Web Api,Xamarin.forms,Entity Framework Migrations,我正在开发一个项目,该项目将使用ASP.NETWebAPI作为数据服务,使用Xamarin便携式应用程序作为客户端 我正在尝试在web应用中启用迁移,但出现以下错误: Enable-Migrations -enableautomaticmigrations -ContextTypeName MyProject.Models.ApplicationDbContext -ProjectName MyProject -StartupProjectName MyProject.App -Verbose

我正在开发一个项目,该项目将使用ASP.NETWebAPI作为数据服务,使用Xamarin便携式应用程序作为客户端

我正在尝试在web应用中启用迁移,但出现以下错误:

Enable-Migrations -enableautomaticmigrations -ContextTypeName MyProject.Models.ApplicationDbContext -ProjectName MyProject -StartupProjectName MyProject.App -Verbose
Using StartUp project 'MyProject.App'.
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 C:\Users\weitz\.nuget\packages\EntityFramework\6.1.3\tools\EntityFramework.psm1:718 char:5
+     $domain.SetData('project', $project)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException
 
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 C:\Users\weitz\.nuget\packages\EntityFramework\6.1.3\tools\EntityFramework.psm1:719 char:5
+     $domain.SetData('contextProject', $contextProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException
 
System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue[T](Project project, String propertyName)
   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.
**PM>**
启用迁移-enableautomaticmigrations-ContextTypeName MyProject.Models.ApplicationDbContext-ProjectName MyProject-StartupProjectName MyProject.App-Verbose
正在使用启动项目“MyProject.App”。
调用带有“2”参数的“SetData”时出现异常:“在程序集中键入”Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject“
“Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本=14.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a”未标记为可序列化。”
位于C:\Users\weitz\.nuget\packages\EntityFramework\6.1.3\tools\EntityFramework.psm1:718 char:5
+$domain.SetData('project',$project)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodInvocationException
+FullyQualifiedErrorId:序列化异常
调用带有“2”参数的“SetData”时出现异常:“在程序集中键入”Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject“
“Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本=14.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a”未标记为可序列化。”
位于C:\Users\weitz\.nuget\packages\EntityFramework\6.1.3\tools\EntityFramework.psm1:719 char:5
+$domain.SetData('contextProject',$contextProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodInvocationException
+FullyQualifiedErrorId:序列化异常
System.NullReferenceException:对象引用未设置为对象的实例。
位于System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue[T](项目项目,字符串propertyName)
位于System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(字符串配置类型名称,布尔值useContextWorkingDirectory)
位于System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(字符串contextTypeName)
在System.Data.Entity.Migrations.EnableMigrationsCommand.c__DisplayClass2.b__0()中
位于System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(操作命令)
对象引用未设置为对象的实例。
**PM>**
正如您所看到的,我已经尝试显式地指定启动项目,但看起来EnableMigrations命令对此并不满意

这是我刚刚创建的一个使用完整.NET的项目(我绑定到EF Core还不支持的TPT/TPH模型),所以EF版本是6.1.3,目标是.NET 4.6.1

我在VS Community 2015更新3版本14.0.25431.01上

更新 无法复制,但即使在添加虚拟启动项目时也会出现问题。

交叉发布的问题,请投票并分享您的实验。

它似乎在抱怨
使用启动项目“MyProject.App”
,但您已经用
-StartupProjectName MyProject.App
指定了启动项目名称

您只能尝试:

Enable-Migrations -enableautomaticmigrations -ContextTypeName MyProject.Models.ApplicationDbContext -ProjectName MyProject -StartupProjectName MyProject.App -Verbose
确保在启动项目配置文件中有有效的连接字符串(除非在DbContext构造函数中指定了连接字符串名称,否则连接字符串应与DbContext一样被称为ApplicationDbContext,如果我没记错的话)


更新 我低估了这个问题。似乎这可能不是您如何指定启动项目,而是启动项目本身。我建议你看看。请特别注意,正如我之前所说,连接字符串存在于web或启动项目的app.config中,并且具有正确的名称。

根据(已测试且有效),在aspnetcore+ef6项目中启用迁移的唯一方法是将
DbContext
impl放在外部完整的.NET类库中,加上添加虚拟启动项目。

虽然很糟糕,但仍然有效。

您的启动项目是否包含用于连接数据库的app.config或web.config?您还可以将包含dbcontext的项目用作启动项目。它使用appsettings.json存储连接字符串。但我尝试将连接字符串添加到app.config,但没有任何帮助。更新评论:我验证了所有连接字符串都设置良好,并且启动项目(项目本身)也设置了web.config。我认为唯一的选择是添加一个虚拟控制台应用程序,并将其设置为启动。为此付出了25美元的努力,无论如何,答案都不起作用。我在EF6回购协议上发布了一条消息,请发表评论。