2010-12-13 56 views
1

bonjour Je veux modifier ma structure de base de données en fonction de mon entité edmx fichier? Je sais comment créer une base de données:Modifier la base de données dans l'entité

if(myEntity.DatabaseExists()) 
{ 
    //????? 
    //check database if there is any change in database alter database according to edmx file.  
} 
else 
{ 
    myEntity.CreateDatabase(); 
} 

pourquoi est-ce que je veux faire ce que je veux installer une nouvelle version de mon entité program.I d'utilisation et mon fichier edmx a été modifié pour ma base de données doit changer? selon mon nouveau fichier edmx.

Répondre

1

Entity Framework ne le supporte pas. La raison pour laquelle cette 'fonctionnalité' est manquante est que ce n'est pas trivial de le faire. Voulez-vous qu'EF modifie votre base de données de production et supprime éventuellement les colonnes contenant des données? Je ne pense pas.

Ce que vous devez faire est de créer des scripts qui vous permettent de mettre à jour le schéma de la base de données. Si vous voulez le faire automatiquement, vous pouvez ajouter une sorte de table 'Version' à votre base de données qui contient le numéro de version du schéma. Au démarrage, vous pouvez vérifier le numéro de version et exécuter tous les scripts de mise à jour de schéma pour les versions les plus récentes (au sein d'une transaction).

J'utilise toujours Microsoft SQL Profiler pour enregistrer les modifications apportées à mon schéma à l'aide de SQL Server Management Studio. Vous pouvez également utiliser un outil tel que SQL Compare (à partir de RedGate) pour comparer deux bases de données et générer les scripts pour les modifications.

EF ne peut pas exécuter les mises à jour automatiquement pour vous, vous devez exécuter ces scripts de base de données vous-même.

+1

+1. FYI: un outil qui peut générer des scripts de changement (alter table ... etc) pour les modèles EF est mon add-in pour VS2010: http://huagati.com/edmxtools/ – KristoferA