0

私はエンティティフレームワークとCodefirstを使用してストアドプロシージャを作成しています。 私がリードしたように、SPを作成するにはパッケージマネージャーでいくつかの手順を実行する必要があります。コード内でupdate-databaseが動作していません

1 - マイグレーション

2-アドイン移行MYCLASS

3-更新データベース

を有効にし、Myclass(new created)でIは(UPで私のSPコードを書く)SPを作成する方法。正常に動作します!!しかしSPを変更してupdate-databaseを再度実行しても動作しないので、新しいMYclass2を作成するために別の追加の移行コマンドを実行する必要があります。そうですか?私は追加マイグレーションを書く必要があるたびに何を意味するのですか?

これは、私は再び更新、データベースを実行すると、結果は私はSQLクエリを変更しても、「アルター手順....」それは動作しません"No pending explicit migration"

ある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"); 
     } 

です変化は起こらない。 おかげ

EDITED

は、このシナリオを考え、私は「...店舗手順tespSP2を変更し、」私はするクエリを変更する必要が私のSP名(単なる例) を変更したい または他の変更、私はもう一度マイグレーションを実行する必要がありますか?またはupdate-databaseはそれを行うことになっていますか?エンティティフレームワークの移行で

+0

さまざまな手法について説明しています。[https://stackoverflow.com/questions/7667630/can-you-create-sql-views-stored-procedure-using-entored-framework-4-1-code-ファー)。 –

答えて

1

は、あなたが

[それはお勧めできません]この表の最後の行を削除することができますかあなたは、コマンド元に戻す/

Update-Database -TargetMigration:MigrationsName

をロールバックを使用することができます_migrationHistory表に追加しましたuse update-database -force

+0

このコードの後に​​はどうなりますか?私がstorePrクエリを変更したいと思ったら、何をすべきなのですか? –

+0

別のマイグレーションを追加してそこでコードを変更することができます。これは最善の方法です 、または手動で行うことができない場合は、最初に_migrationHistoryテーブルの最後の行を削除してからupdate-databaseコマンドを実行します。最後のマイグレーション – Saeed

+0

でデータベースを更新してください。ただし、コードを最初に使用するときは、SQlサーバーとそのテーブルにアクセスしないことになっています。私は更新データベースが自動的にそれを行う必要があると思った!だから、移民のためのREwirteはありません、私は正しいですか?新しい移行を作成するたびに –

関連する問題