none
Échec d'échaffaudage DbContext RRS feed

  • Question

  • Bonjour tout le monde,

    Voilà ce que je vois dans la console NuGet :

    PM> Scaffold-DbContext "Data Source=.\SQLEXPRESS;Initial Catalog=WebAPI014;Integrated Security=True;Pooling=False" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Heroes -Verbose
    Using project 'WebAPI014'.
    Using startup project 'WebAPI014'.
    Build started...
    Build failed.

    C'est surtout la dernière ligne, qui ne me plaît pas des masses.
    Avant ça, j'ai installé les outils comme indiqué là : https://www.c-sharpcorner.com/article/asp-net-co-crud-using-angular-5-and-entity-framework/

    Ça a été laborieux mais ça a abouti.

    En revanche, Scaffold-DbContext, ça serait bien sympathique, mais il s'est pris les pieds dans le tapis, où ai-je bien pu oublier quelque chose ?

    Je précise que

    ng serve -o

    a abouti à "Compiled successfully"



    • Modifié Gloops lundi 4 mars 2019 07:03
    lundi 4 mars 2019 01:23

Toutes les réponses

  • Il fallait de nouveau générer l'application sous Visual Studio.

    J'avais d'abord eu une installation correcte des composants, puis à l'instant conflit de versions sur Razor. Étrange.

    Toujours est-il que maintenant j'obtiens Build Succeed, mais plus loin :

    Error Number:4060,State:1,Class:11
    Impossible d'ouvrir la base de données "WebAPI014" demandée par la connexion. La connexion a échoué.
    Échec de l'ouverture de session de l'utilisateur 'DESKTOP

    Pourtant là on est en EntityFramework Code First. C'est un peu comme un menuisier qui me reprocherait de ne pas avoir de porte alors que je l'ai fait venir pour en mettre une ...

    lundi 4 mars 2019 08:11
  • Il se peut bien qu'il y ait deux problèmes :

    • j'ai utilisé une chaîne de connexion qui n'est pas adaptée à CodeFirst
    • il reste à vérifier si Scaffold-DbContext présente des particularités dans ce contexte

    La chaîne de connexion pourrait être de ce style :

        <!--<add name="SampleDBEntities" connectionString="metadata=res://*/Models.EmployeeModel.csdl|res://*/Models.EmployeeModel.ssdl|res://*/Models.EmployeeModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\SampleDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />-->

    (en remplaçant bien sûr Employee par Hero dans l'exemple donné en haut)

    D'ailleurs, dans l'exemple cité ci-dessus, tiré d'un projet GoodExample dans une solution AngularJsExample (peut-être de CodeProject ?) je vois qu'il faut utiliser le fournisseur EntityFramework plutôt que SqlServer. C'est le paramètre suivant.

    Pour Scaffold-DbContext, la documentation est là :

    https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell#get-dbcontext

    où l'URL laisse entendre que Scaffold-DbContext peut aussi servir sur d'autres outils.

    Plusieurs personnes aimeraient bien un peu plus d'exemples.

    J'ai vu que les questions et commentaires sur ce thème sont à poser sur GitHub, donc cette question-ci sera à suivre là :

    https://github.com/aspnet/EntityFramework.Docs/issues/1336


    • Modifié Gloops mardi 5 mars 2019 13:00
    mardi 5 mars 2019 12:55