Comment prévenir DbContext de la modification de la base de données?

J'apprends le Cadre de l'Entité (actuellement à l'aide de EF6 beta) et je suis en utilisant le code de motif sur une base de données existante. Les entités et les DbContext classe sont créés automatiquement à l'aide d'un modèle T4.

Je tiens à prévenir la DbContext de créer /modifier quoi que ce soit dans la base de données lors de l'exécution.

Comment puis-je le faire?

Comment avez-vous créer votre base de données? EF Premier Code par défaut ajoute une table de la base de données pour être en mesure de dire si votre modèle a changé. Si la base de données n'a pas été creqated par codefirst/migrations il n'y a pas de données dans la db et EF ne touche pas le schéma de la databse. Si vous parlez des données - chaque fois que vous appelez .SaveChanges() de données dans la base de données peuvent être ajoutés/modifiés/supprimés
CodeFirst ne changera pas votre base de données si elle n'a pas le créer.
Eh bien, il fait de créer de nouveaux objets, car je n'ai pas cartographié les schémas correctement au premier abord. J'ai fini par avoir toutes les tables recréé par défaut dans le schéma dbo.
Oui, il créé de nouveaux objets, car il n'a pas pu trouver, parce qu'ils n'ont pas été définis dans le schéma par défaut. A noter que depuis elle a créé des tableaux, il a également ajouté les migrations table d'historique où il conserve des informations sur les modèles. Par conséquent, il a été en mesure de dire que le modèle a changé, mais en comparant les tableaux qu'il a créées et non pas celles qui existaient déjà. Il permettra également d'utiliser les tableaux qu'il a créées et non l'original. Après la désactivation de l'initialiseur, si vous modifiez le modèle de votre modèle ne correspond plus à la base de données et peut causer des problèmes d'exécution ou de corruption de données.
Vous devez utiliser .ToTable(tableName, schemaName) à la carte pour une table qui est en non-valeur par défaut de schéma.

OriginalL'auteur Crono | 2013-09-18