0

J'utilise entity framework et Codefirst pour créer une procédure stockée. En tant que reed, nous devrions faire quelques étapes dans le gestionnaire de paquets pour créer SP.update-base de données ne fonctionne pas dans le code d'abord

1 - permettre la migration

2- add migration myClass

3- update-base de données

et Myclass(new created) j'écris mon code SP dans la méthode UP() pour créer SP. fonctionne bien !! Mais quand je change de SP et que j'exécute à nouveau update-database, ça ne marche pas et j'ai besoin de faire une autre commande d'add-migration pour créer une nouvelle classe MYclass2. Est-ce correct? Je veux dire chaque fois que je devrais écrire une migration supplémentaire?

c'est mycode

public override void Up() 
     { 
      Sql(@"Create procedure testSp 
         as 
select std.Id as stdName, std.Name as MajorName, mj.Name from dbo.Students as std 
inner join dbo.Majors as mj on std.Id = mj.Id 
"); 
     } 

     public override void Down() 
     { 
      Sql("drop procedure testSp"); 
     } 

quand je lance la mise à jour base de données à nouveau le résultat est "No pending explicit migration"

même si je change la requête SQL pour « procédure Alter .... » ça ne fonctionne pas, aucun changement ne se produit. grâce

ÉDITÉE

considèrent ce scénario, je veux changer mon nom de SP (juste un exemple) donc je dois changer la requête pour « procédure magasin Alter tespSP2 ... » ou tout autre changement, devrais-je réexécuter la migration supplémentaire? ou update-database est supposé le faire?

+0

Différentes techniques discutées [ici] (https://stackoverflow.com/questions/7667630/can-you-create-sql-views-stored-procedure-using-entity-framework-4-1-code- sapins). –

Répondre

1

des migrations cadre d'entités ajoutées à une table de _migrationHistory, vous pouvez supprimer la dernière ligne de ce tableau [il est pas recommandé]

ou vous pouvez utiliser rollback/annuler la commande

Update-Database -TargetMigration:MigrationsName

puis utiliser update-database -force

+0

Alors, qu'arrivera-t-il après ce code? Considérons que je veux changer ma requête storePr, que dois-je faire étape par étape? –

+0

vous pouvez ajouter une autre migration et changer votre code là, c'est la meilleure façon ou si vous n'êtes pas en production, vous pouvez le faire manuellement, d'abord supprimer la dernière ligne de la table _migrationHistory, puis exécutez la commande update-database, Soyez re mettre à jour votre base de données avec la dernière migration – Saeed

+0

mais lorsque nous utilisons d'abord le code, il est supposé ne pas accéder au serveur SQl et à ses tables. Je pensais que la base de données de mise à jour devrait le faire automatiquement! Donc, il n'y a pas de REwirte sur la migration, ai-je raison? chaque fois que nous devrions créer une nouvelle migration. –