web-dev-qa-db-fra.com

Arrêter l'entité Cadre de la modification de la base de données

Je commence à jouer avec la première approche du Code - Première approche du cadre d'entité, principalement pour que je puisse décorer mes propriétés avec des annotations d'affichage à mon avis (sinon, je dois maintenant créer une classe presque identique à la L'une que la structure d'entité a généré pour moi, pour que je puisse ajouter des annotations, puis copier les données d'un objet à la suivante).

À l'heure actuelle, on dirait quand je démarre ma candidature, il tente de créer une base de données.

Je ne veux pas de cadre d'entité à jamais Modifier ma base de données. Non, pas jamais. N'essayez même pas. Ce n'est vraiment pas si difficile de modifier des bases de données; Je me sentirais beaucoup plus confortable si je le faisais moi-même. Je n'ai pas besoin d'un cadre pour me tenir la main lors de la conception d'une base de données.

Puis-je dire au cadre d'arrêter d'essayer de modifier ma base de données? Je suis très hésitant à utiliser le code - tout d'abord comme le fait qu'il tente de modifier ma base de données est plutôt effrayant. Même en développement, je ne veux jamais le voir arriver.

Ai-je pas de chance?

38
Justin Helgerson

Si vous souhaitez utiliser EF mais ne modifiez jamais la base de données, vous ne voulez probablement pas d'abord du code. Vous voulez probablement quelque chose de plus comme la base de données d'abord.

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

Liens de la réponse Commentaires:
[.____] http://automapper.codeplex.com/
[.____] Mise en route avec Automapper

eDIT: J'ai mal compris l'objectif, vous devez faire référence à cette réponse lorsque le code correct suivant a été donné :

Si vous ne voulez pas que EF crée votre base de données, vous pouvez désactiver l'initialisateur de base de données

Database.SetInitializer<MyContext>(null);
4
sclarson

Lorsque vous déclarez votre initialiseur, utilisez la classe de base:

public class DatabaseInitialiser : CreateDatabaseIfNotExists<MyContext>

plutôt que :

public class DatabaseInitialiser : RecreateDatabaseIfModelChanges<MyContext>

Ou si vous utilisez:

Database.SetInitializer<MyContext>(new RecreateDatabaseIfModelChanges<MyContext>);

remplacez ceci par:

Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>);
2
Lloyd Powell

Depuis code d'abord À peu près exactement ce que vous décrivez, je ne comprends pas votre question.

Si vous ne voulez pas que EF fidoue avec votre base de données, alors générer un modèle à partir de votre base de données existante.

1
CodeCaster