2009-04-27 5 views
3

J'ai une assez grande base de données connectée à mon Entity Framework. J'ai un ensemble particulier de tables où une clé commune (fk) a été supprimée de la conception. Lorsque je "mets à jour le modèle de la base de données", j'obtiens une série d'erreurs à propos de cette clé manquante.Entity Framework: Régénération des tables modifiées (changements de clé)

Pourquoi le processus de mise à jour ne détecte-t-il pas correctement que cette clé a été supprimée? En outre, si je supprime manuellement la propriété du modèle, je me retrouve avec d'autres erreurs. J'ai également essayé de simplement supprimer la table et l'ajouter à nouveau, mais maintenant la table n'apparaît pas dans la section "Add" de l'assistant de mise à jour. Donc, à moins de supprimer le tout et de recommencer, y a-t-il un moyen de récupérer gracieusement? L'équipe EF a-t-elle publié des versions plus récentes de cet assistant qui contient déjà certains de ces problèmes?

Répondre

5

Entity Framework est parfois confus. Ce que vous devez faire est de supprimer la table d'entités du modèle, puis de renommer la table dans SQL Server en TableName_Temp, actualiser le modèle, maintenant la table Entity devrait être OK, donc supprimer la table d'entité à nouveau le renommer et actualisez le modèle une fois de plus. Cette fois, tout devrait bien se passer.

Je sais que c'est une procédure foirée, mais c'est la seule façon que j'ai trouvée pour résoudre ce problème sans pour autant faire disparaître toute l'edmx et partir de rien. Actuellement, dans mon organisation, nous avons pour politique de ne pas apporter de modifications à l'EDMX à moins que ce ne soit absolument nécessaire afin que nous puissions supprimer et recréer quand cela est nécessaire sans aucun problème.

Espérons que cela aide!

+0

N'est-ce pas un triste commentaire sur le processus de régénération? La règle dans l'entreprise est simplement de ne pas autoriser le changement edmx? La SP devrait vraiment aborder ce point douloureux pour les gens. –

+0

Je crois qu'ils traitent la plupart des points de douleur avec LINQ to SQL et LINQ to Entities dans la version 4.0. Ils offrent même un mode où vous n'avez même pas besoin d'un fichier EDMX. Je ne suis pas sûr de la qualité de ce mode, mais il pourrait fournir une implémentation plus propre que NHibernate si vous n'utilisez pas le mapping Fluent. – Lukasz

Questions connexes