2012-08-22 4 views
0

J'ai commencé à étudier les migrations d'Entity Framework sur 4.3.1. Vous avez quelques questions:Pourquoi utiliser Entity framework Migrations

  1. Qu'est-ce qui est préféré pendant le développement? Pourquoi ne devrais-je pas simplement laisser tomber et recréer ma base de données toujours puis reseed. Si j'utilise les premières migrations de code, est-ce que je peux choisir de commencer par initialiser ma base de données puis d'ajouter une méthode de départ à chaque migration pour ajouter uniquement de nouvelles données? Si j'utilise les migrations automatiques, est-il possible de faire quelque chose de similaire? c'est-à-dire ensemencer initialement et ensuite graine selon les besoins?

  2. Quel est l'avantage d'utiliser les migrations pendant le développement? J'ai seulement besoin de migrations lors du passage à la production. Donc, j'ai besoin de créer mon script initial et ensuite des scripts pour chaque migration, donc serait-il possible d'utiliser seulement les migrations une fois que je veux passer à la production et à ce moment créer un script initial et maintenir un historique de migration de ce point en avant?

Répondre

1

Eh bien, dans notre cas, nous avons commencé à utiliser parce que dans notre Migrations société, devs n'ont pas les droits nécessaires pour créer une base de données, qui conduisent au scénario amusant où je laissé tomber le DB quelques À mon avis, il semble plus facile de faire croître votre DB de manière incrémentielle, plutôt que de devoir la recréer à chaque fois. Si je devais abandonner et recréer notre DB chaque fois qu'une propriété est ajoutée, supprimée ou modifiée, je n'en verrais jamais la fin.

Je n'ai pas encore vu une possibilité pour les graines incrémentielles, sauf peut-être si vous créez des fichiers de migration manuelle.
Les migrations ont la possibilité de passer à une version spécifique (en avant ou en arrière) et il est possible de générer un script SQL à partir d'une migration.
Donc, fondamentalement, vous n'avez plus besoin de créer un script SQL de migration à la main, vous pouvez faire en sorte que Migrations le fasse pour vous.

+0

Merci! cela semble être une fonctionnalité intéressante, je suis juste réticent à utiliser les migrations dans mon environnement de développement car il exécute la méthode seed à chaque mise à jour pour que mes données soient dupliquées. Je pourrais utiliser AddorUpdate mais d'après ce que j'ai lu qui semble venir avec ses propres problèmes, c'est pourquoi il semble être le plus facile et le plus sûr de laisser tomber et recréer. Ce serait génial si nous pouvions désactiver la méthode d'amorçage ou avoir plusieurs méthodes d'amorçage à chaque migration. Je suppose qu'un moyen de contourner cela est d'ajouter Sql (insérer) dans mes fichiers de migration ... mais alors mes données de départ ne sont pas dans un seul endroit, peu en désordre –

+0

Ouais, c'est en effet agaçant. Nous l'avons résolu rapidement en vérifiant d'abord si un certain enregistrement (qui serait normalement ensemencé) était déjà présent dans la DB et si c'est le cas, abandonner le semis. D'après ce que je lis dans d'autres publications, il est parfaitement possible de semer de façon incrémentielle si vous utilisez des migrations manuelles. Il est possible de désactiver l'amorçage: ne mettez aucun code dans votre méthode seed :-) –

+0

Vous pouvez utiliser la méthode AddOrUpdate() qui fournit un moyen simple de le faire :) – Ross

Questions connexes