2010-11-17 9 views
1

Je suis nouveau à EF4, utilise CPT4 Code-First et SQLExpress (MVC2 + Ninject mais n'a pas d'importance). Cela fonctionne bien mais j'ai une question/problème. Quand je change mon modèle la base de données se déposer et créé en arrière parce que j'ajouté cette ligne dans mon OnApplicationStart()Créer les tables db Provider après RecreateDatabaseIfModelChanges

{ Database.SetInitializer<CorpiqDb>(new RecreateDatabaseIfModelChanges<CorpiqDb>()); } 

Mais j'utiliser les services d'application (adhésion et gestion de rôles) que j'ai créé à l'aide aspnet_regsql.exe Mais Je ne veux pas avoir à l'exécuter chaque fois que mon modèle change, est-il possible d'avoir un script qui va ajouter ces fonctionnalités à ma base de données? Comme pour le moment, après une modification de mon modèle, j'ai cette erreur: Impossible de trouver la procédure stockée 'dbo.aspnet_CheckSchemaVersion'.

Merci!

Répondre

1

Ce que j'ai fait, et ça marche plutôt bien, c'est que j'ai deux DB séparés, un pour mon domaine et un autre pour mon adhésion à asp.net. Lorsque mon modèle change, j'appelle une action qui supprime la base de données du modèle et supprime les utilisateurs du membre. Événement mieux, je peux semer ma nouvelle base de données avec les données que je veux avoir pour mon test.

2

Utilisez le database generation power pack. Il supprime la nécessité de supprimer la base de données lors de la mise à jour du schéma.

+0

Merci Craig, peut-il être contrôlé par code ou nous devons utiliser un Wizzard? J'ai lu votre lien et il ne semble pas être ce que je cherche, je veux que la base de données soit générée uniquement par le code à des fins de tests unitaires et de migration. Pour l'instant ça marche mais je n'ai pas les tables des Services d'Applications et le proc ... – VinnyG

+0

Il produit un script. Vous pouvez faire ce que vous voulez avec ce script. –