VS 2015 ASP.NET Web API (EF6) & Xamarin Enable-les Migrations échouent

je développe un projet qui utilisera ASP.NET API Web comme service de données, et une application portable Xamarin comme client.

j'essaie d'activer les migrations dans l'application web, mais j'obtiens l'erreur suivante:

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:Usersweitz.nugetpackagesEntityFramework.1.3toolsEntityFramework.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:Usersweitz.nugetpackagesEntityFramework.1.3toolsEntityFramework.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>**

comme vous pouvez le voir, j'ai essayé de spécifier explicitement le projet start-up, mais cela n'a pas l'air de plaire à la commande enable-migrations.

c'est un projet que je viens de créer qui utilise full .NET (je suis lié au modèle TPT/TPH qui EF Core ne supporte pas encore), donc la version EF est 6.1.3 ciblant .NET 4.6.1.

je suis sur VS Communauté 2015 mise à Jour de la Version 3 14.0.25431.01.

mise à Jour

ne peut pas se reproduire, mais le problème se produit même lors de l'ajout d'un projet de démarrage fictif.

Croix posté question ici, merci de voter et de partager vos expériences.

18
demandé sur Shimmy 2017-02-10 05:33:07

2 réponses

on dirait qu'il se plaint de Using StartUp project 'MyProject.App' mais vous avez déjà spécifié le projet de démarrage avec le nom -StartupProjectName MyProject.App

Pouvez-vous essayer seulement:

Enable-Migrations -enableautomaticmigrations -ContextTypeName MyProject.Models.ApplicationDbContext -ProjectName MyProject -StartupProjectName MyProject.App -Verbose

assurez-vous que dans votre fichier de configuration de projet de démarrage vous avez une chaîne de connexion valide (sauf si vous spécifiez un nom de chaîne de connexion dans le constructeur DbContext, votre chaîne de connexion devrait être appelée ApplicationDbContext, comme votre DbContext, si je me souviens correctement)


UPDATE J'ai sous-estimé le problème. Il semble que ce ne soit pas la façon dont vous spécifiez le projet de démarrage, mais le projet de démarrage lui-même. Je suggère de regarder cette réponse. Faites attention, comme je le disais avant, que la chaîne de connexion existe dans le web ou l'application.config dans le démarrage du projet et a le bon nom.

1
répondu Francesc Castells 2017-05-23 12:02:10

selon (testé et fonctionnel), la seule façon d'activer les migrations dans le projet aspnetcore+ef6, est d'avoir le DbContext impl dans une bibliothèque de classe .net complète externe, plus l'ajout d'un projet de démarrage fictif.

Suce mais fonctionne.

1
répondu Shimmy 2017-07-16 13:54:18