web-dev-qa-db-fra.com

Code-First, quand je vais à enable-migrations, je reçois le message "Aucun type de contexte n'a été trouvé dans l'assembly 'DOC'".

J'utilise Code-First, crée un site Web à l'aide du modèle standard, puis continue d'ajouter des tableaux à la variable applicationDBContext principale, mais maintenant, lorsque je vais Enable-Migrations in Gestionnaire de packages Console I obtenir 

Aucun type de contexte n'a été trouvé dans l'assembly 'DOC'. 

et quand je mets le chemin complet en utilisant:

ContextTypeName Option enable-migrations -ContextTypeName DOC.Migrations.Configuration

...Je reçois:

Les migrations ont déjà été activées dans le projet 'DOC'. Pour écraser la configuration de migration existante, utilisez le paramètre -Force.

Et quand je vais -Force , il dit 

Migration de code d'abord activée pour le projet DOC.

mais quand j'essaie de add-migration je reçois 

Erreur CS0311 Le type 'DOC.Migrations.Configuration' ne peut pas être utilisé comme paramètre de type 'TContext' dans le type générique ou la méthode 'DbMigrationsConfiguration'. Il n'y a pas de conversion de référence implicite de 'DOC.Migrations.Configuration' en 'System.Data.Entity.DbContext'. DOC xxxxxxx\DOC\Migrations\Configuration.cs.

Quand je vérifie le fichier Configuration.cs , il le change: 

internal sealed class Configuration : DbMigrationsConfiguration 

...à: 

internal sealed class Configuration : DbMigrationsConfiguration

... causant l'échec de la construction du projet

La seule fois où j'ai réussi à gérer cela a fonctionné en rétrogradant le entityframework de 6.1.3 à 6.1.2 puis à une nouvelle mise à niveau.

Parfois, je dois mettre à niveau et rétrograder plusieurs fois, fermer VS et ré-ouvrir et puis cela fonctionne.

Y a-t-il une solution à cela? c'est vraiment agaçant.

 enter image description here

J'ai également remarqué que ma classe DbContext dérive de IdentityDBContext, est-ce correct? Je sais que vous le dérivez généralement de DbContext, mais depuis que j'ai démarré le projet à l'aide de l'assistant, il l'a créé automatiquement et je viens d'y ajouter mes autres tables. 

 enter image description here

Mon web.config

    <?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.Microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

  <!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --><!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="data source=localhost\SQLTEST;initial catalog=DOC;User Id=xxx;Password=xxxx;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />
    <!--<add name="DefaultConnection" connectionString="data source=zzzzz;initial catalog=DOC;User Id=zzzzzz;Password=zzzzz;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <!--
    For a description of web.config changes see http://go.Microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.5.2" />
      </system.Web>
  -->
  <system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
    </security>
    <modules>
      <remove name="FormsAuthentication" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.AspNet.Identity.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework.MappingAPI" publicKeyToken="7ee2e825d201459e" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.1.0.9" newVersion="6.1.0.9" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>
4
Marwan Butrus

Vous confondez les paramètres pour enable-migrations et add-migration

enable-migrations a un nom de type de contexte. Vous spécifiez le nom de la configuration, pas le contexte. 

enable-migrations -ContextTypeName DOC.Models.ApplicationDbContext

Puis ajouter:

add-migration MyMigrationName -ConfigurationTypeName DOC.Migrations.Configuration

Je ne suis pas sûr que vous ayez même besoin des paramètres car il semble que vous n'ayez qu'un seul projet. Voici la référence de la commande

Peu importe que vous héritiez d'IdentityDbContext. De plus, EF n’a pas les versions 6.3 et 6.4, c’est 6.1.3 ou EF Core.

2
Steve Greene

Essayez de créer un nouveau projet, juste pour vérifier ce dont nous avons besoin. Ok donc vous allez fichier> nouveau> projet, sous le menu Visual C # nouvelle application web asp.net, choisissez un nom pour le projet, ceci sert uniquement à vérifier ce qui manque dans votre projet. Vous cliquez sur OK, sélectionnez MVC dans le côté gauche et il manque l'étape dans le côté droit. Vous pouvez voir un bouton d'authentification de modification et sous celui-ci, l'authentification: pas d'authentification, cliquez dessus et sélectionnez des comptes d'utilisateur individuels. Cliquez sur ok et cette option, installez automatiquement l'entité et l'identité. C'est le problème. J'espère pouvoir vous aider, n'hésitez pas à me contacter à nouveau.

0
Aravindhan R