ADO.NET Entity Framework: l'Assistant de mise à jour n'ajoute pas de tables



4 Answers

Définir les clés primaires à toutes les tables ou une case à cocher non cochée "Autoriser null" à n'importe quelle colonne de chaque table. Ça marche pour moi :)

Question

J'ai ajouté un nouveau modèle de données d'entité ADO.Net dans mon projet et utilisé l' assistant de mise à jour pour ajouter des tables dans le modèle. Cinq des tables sélectionnées ont été ajoutées à la surface de conception. Deux autres tables ne seront pas ajoutées. Je les sélectionne dans l'assistant et clique sur Terminer, mais ils n'apparaissent jamais sur la surface de conception.

Est-ce un bug, ou existe-t-il des situations où une table ne peut pas être ajoutée au modèle (par conception)?

UPDATE: Le XML (* .edmx) révèle le problème.

<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not 
have a primary key defined and no valid primary key could be inferred. 
This table/view has been excluded. To use the entity you will need to 
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
    <Property Name="role_id" Type="decimal" />
    <Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->

Merci Craig pour votre réponse.




Ma solution à ceci est de supprimer le modèle entier et de le lire en incluant les nouvelles tables que je veux.

J'ai accidentellement supprimé une table dans le concepteur une fois et je ne pouvais pas le lire. Par conséquent, supprimer le modèle entier et le lire.

J'ai eu quelques problèmes avec ceci aussi ( modèle de données d'entité d'Ado.Net ne mettant pas à jour correctement )




Un moyen facile que j'ai trouvé était de (dans SQL Server Management Studio) ajouter une colonne ID de type INT, désélectionner "Autoriser Nulls", et sous Propriétés de colonne (de ID) >> Identity Specification >> vérifier (Is Identity), et faire incrément sûr est défini.

Une fois que cela est fait, retournez dans votre fenêtre .edmx, cliquez avec le bouton droit de la souris et mettez à jour le modèle depuis la base de données.




J'ai eu ce problème aussi, tout ce qui précède n'a pas fonctionné pour moi. Ce qui m'a aidé était le suivant.

Lorsque vous essayez de vous connecter à une base de données, celle-ci peut avoir différents utilisateurs avec des informations d'identification différentes. Disons l'utilisateur A jusqu'à D.

Si vous essayez de vous connecter à un utilisateur, assurez-vous que les informations d'identification de l'utilisateur sont activées, dans ce cas, les options de lecture et d'écriture sont activées.

Pour ce faire, démarrez MS SQL Server Managment Studio, connecté avec votre serveur SQL et sélectionnez la base de données avec laquelle vous essayez de vous connecter dans Visual Studio. Sous 'your_dbname' -> Security -> Users vous trouvez une liste d'utilisateurs. Cliquez avec le bouton droit sur le nom d'utilisateur avec lequel vous essayez de vous connecter et sélectionnez les propriétés. Une fenêtre s'ouvre Sélectionnez la page 'Général' (sélectionnée par défaut) et sous l'onglet 'Appartenance au rôle de base de données' assurez-vous que 'db_datareader' et 'db_datawrite' sont sélectionnés.

Remarque: Lorsque vous vous connectez également à MS SQL Server Managment Studio, assurez-vous de vous connecter avec un utilisateur qui peut activer / désactiver ces options ...




Vous n'avez pas besoin de supprimer le modèle entier (cela peut être des centaines de tables!).

L'assistant peut gérer les «nouveaux éléments», mais certains changements tels que la modification des clés composites et le changement de nom des colonnes (il ne sait pas quoi faire), de sorte qu'il n'essaie pas, et les choses se désynchronisent.

SO: SUPPRIMER les tables en question à partir du modèle (mode conceptuel) AND à partir de Model.Store, puis mettre à jour le modèle en utilisant l'assistant, et rajouter seulement les tables en question.






Related