Question

J'ai installé VS SP1 et joué avec Entity Framework.

J'ai créé un schéma à partir d'une base de données existante et essayé quelques opérations de base.

La plupart des choses se sont bien déroulées, à l'exception de la mise à jour du schéma de la base de données.

J'ai modifié la base de données de toutes les manières fondamentales :

  • ajouté un nouveau tableau
  • supprimé un tableau
  • ajouté une nouvelle colonne à un tableau existant
  • supprimé une colonne d'une table existante
  • changé le type d'une colonne existante

Les trois premiers se sont bien déroulés, mais le changement de type et la suppression de colonnes n'ont pas suivi les modifications de la base de données.

Existe-t-il un moyen de réaliser le travail du designer ?Ou n'est-il pas pris en charge pour le moment ?Je n'ai pas encore trouvé de matériel connexe, mais je continue mes recherches.

Était-ce utile?

La solution

Je suppose que cela ne se produit peut-être pas car cela interromprait la construction du code existant, mais ce n'est qu'une supposition de ma part.

Voici ma logique :

Premièrement, EF est censé être un mappage de table supérieur à 1: 1, il est donc tout à fait possible que le simple fait que vous supprimiez une colonne de la table A ne signifie pas que pour cette entité, il ne devrait pas y avoir de description de propriété.Vous pouvez simplement mapper cette propriété à une autre table.

Deuxièmement, changer un type pourrait simplement interrompre les builds.c'est la seule justification.

Autres conseils

J'ai constaté qu'en général, il y avait encore quelques bugs avec la fonctionnalité « Mettre à jour le modèle à partir de la base de données ».

Les clés sont ce qui tue pour moi - je n'ai pas encore apporté de modification à une relation de clé étrangère ou pour ajouter une clé primaire à une table et faire fonctionner correctement le programme de mise à jour (en ce sens qu'il donnera une erreur de compilation sur le fichier généré). code) - mais pour résoudre le problème, il suffit de supprimer le modèle et de le réimporter (cela ne prend qu'une minute) - c'est évidemment loin d'être idéal, mais je n'ai jamais eu d'échec lors d'une "nouvelle" importation.

D'après les démos du designer que j'ai vues, ce n'est pas un outil sans faille.Il s'agit d'un produit en version 1.0, il comportera donc forcément quelques problèmes.Le type de changement en fait partie, semble-t-il.En observant le concepteur et la génération de code, j'ai pensé que l'on se briserait soit au moment de la compilation (peu probable), soit au moment de l'exécution (lorsque le modèle est réellement exécuté).

Vous devez supprimer vous-même la colonne du concepteur ou du fichier XML.

Comme mentionné précédemment, vous pouvez simplement supprimer la colonne du concepteur.En ce qui concerne le changement du type de données de la colonne :actualisez simplement le modèle de la base de données, puis accédez aux mappages de tables et sélectionnez la colonne que vous avez modifiée dans la base de données.les valeurs de droite représentent votre modèle, curieusement, cela n'est pas mis à jour automatiquement, mais sélectionnez simplement la colonne de droite, accédez aux propriétés et modifiez-y le type de données.Cela devrait devenir un menu déroulant.

Acclamations.

Rouge

J'ai construit une application similaire à celle que vous avez demandée.Mais ma solution était trop difficile.Je vais essayer de le dire ;

  1. Vous devez créer vos propres classes de gestion de base de données et ces objets seront responsables de la création et de la mise à jour du schéma de base de données (je l'ai créé manuellement).

  2. J'ai vu un bon article et un bon code source sur Blog de l'équipe ADO.NET alors vous pouvez également télécharger EDMTools depuis ce blog, il est open source.Et vous pouvez également implémenter des routines de génération et de mise à jour de modèles à partir de ceux-ci dans votre projet.

  3. Enfin, lorsque votre schéma a changé, vous devez recréer et lier votre modèle et reconstruire votre assemblage de données pendant l'exécution.Mais vous devez savoir que le plus important est que vous devez lier votre assemblage de modèle de données à votre projet avec un couplage faible (consultez ceci poste)

    Autrement, vous devriez attendre la version EF 4.0 (c'est CTP 1 maintenant), ils ont annoncé qu'ils fourniraient des fonctions de création, de suppression et de mise à jour de DatabaseScript.

Bonne serrure

La façon dont je fais cela (et je fais toutes les choses que vous mentionnez, ainsi que le renommage des colonnes) consiste à apporter des modifications à la base de données et à régénérer le code EF à l'aide d'EF Code First.

Je ne modifie pas les classes EF Code First pour le meilleur ou pour le pire (y compris les colonnes aux noms absurdes pour les relations) afin de faciliter le processus.

Aucun concepteur ou générateur de schéma ORM ne pourra apporter de modifications à votre base de données de production si elle contient des données contraintes.C'est pourquoi vous devez toujours commencer par vérifier si vos modifications apportées à la base de données sont réalisables, les essayer sur une base de données de développement, puis adapter votre code pour refléter les modifications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top