私はEntity FrameworkでCode Firstアプローチを使用しています。Code First - Entity Frameworkで変更されたテーブルのみを削除して作成する方法
私は以下のようにカスタムデータベース初期化子を作成しました。
public class CustomInit : IDatabaseInitializer<APIContext>
{
public void InitializeDatabase(APIContext context)
{
bool dbExists;
dbExists = context.Database.Exists();
if (dbExists)
{
// remove all tables
context.Database.ExecuteSqlCommand(
"EXEC sp_MSforeachtable @command1 = \"DROP TABLE ?\"");
// create all tables
var dbCreationScript = ((IObjectContextAdapter)
context).ObjectContext.CreateDatabaseScript();
context.Database.ExecuteSqlCommand(dbCreationScript);
context.SaveChanges();
}
else
{
throw new ApplicationException("No database is present");
}
}
}
上記のコードに従って、データベース内のすべてのテーブルは削除され、再作成されます。私がする必要がどのような
のようなコード に変更されたテーブル/エンティティをドロップして作成している - 任意の列を追加または削除など
はありますとにかく、私たちはこれを行うことができますか?
ご指摘いただきありがとうございます。
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
これはあなたのプログラムを実行するたびにデータベースに対して、あなたのモデルをチェックし、自動的に削除してデータベースを再作成します。
[移行](https://msdn.microsoft.com/en-us/library/jj591621(v=11113).aspx)が使用されないのはなぜですか? –
@ IvanR.私はMigrationsを一度も使用していません。私の質問への解決策を見つけるために、どのように移行を実装できるかについて私を導くことができれば、あなたのようなものでしょう。ありがとうございました –