Code-first vs Model/Database-first
Je pense que les différences sont :
Code first
-
Très populaire car les programmeurs chevronnés n’aiment aucun type de concepteur et définir le mapping en EDMX XML est trop complexe.
-
Contrôle total sur le code (pas de code auto-généré difficile à modifier).
-
L’attente générale est que vous ne vous souciez pas de la base de données. La base de données est juste un stockage sans logique. EF gérera la création et vous ne voulez pas savoir comment il fait le travail.
-
Les modifications manuelles de la base de données seront très probablement perdues car votre code définit la base de données.
Database first
-
Très populaire si vous avez une base de données conçue par des DBA, développée séparément ou si vous avez une base de données existante.
-
Vous laissez EF créer les entités pour vous et après modification du mapping, vous générez les entités POCO.
-
Si vous voulez des fonctionnalités supplémentaires dans les entités POCO, vous devez soit modifier le template T4, soit utiliser des classes partielles.
-
Les modifications manuelles de la base de données sont possibles car la base de données définit votre modèle de domaine. Vous pouvez toujours mettre à jour le modèle à partir de la base de données (cette fonctionnalité fonctionne plutôt bien).
-
J’utilise souvent cela avec les projets VS Database (uniquement les versions Premium et Ultimate).
Model first
-
À mon avis, populaire si vous êtes fan des concepteurs (= vous n’aimez pas écrire du code ou du SQL).
-
Vous “dessinez” votre modèle et laissez le workflow générer votre script de base de données et le template T4 générer vos entités POCO. Vous perdez une partie du contrôle sur vos entités et votre base de données, mais pour les petits projets simples, vous serez très productif.
-
Si vous voulez des fonctionnalités supplémentaires dans les entités POCO, vous devez soit modifier le template T4, soit utiliser des classes partielles.
-
Les modifications manuelles de la base de données seront très probablement perdues car votre modèle définit la base de données. Cela fonctionne mieux si vous avez le Database generation power pack installé. Il vous permettra de mettre à jour le schéma de la base de données (au lieu de le recréer) ou de mettre à jour les projets de base de données dans VS.
Je m’attends à ce que dans le cas d’EF 4.1, il y ait plusieurs autres fonctionnalités liées à Code First vs. Model/Database first. L’API Fluent utilisée dans Code first n’offre pas un
(Réponse tronquée)