0

EF CodeFirst メソッドに問題があります。データベースの作成後にインデックスを作成する必要があります。しかし、OnModelCreating メソッドの呼び出しが早すぎます (DB がまだ存在していません)。「AfterModelCreating」メソッドはありますか?

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{
     base.OnModelCreating(modelBuilder);
     this.Database.ExecuteSqlCommand(String.Format("CREATE INDEX IX_{0} ON {1} ({0})", "Text", "Table")); 
}

ありがとう

4

1 に答える 1

1

4.3 より前の EF バージョンでは、データベース初期化子を構成する必要があります。

System.Data.Entity.Database.SetInitializer<YourDbContext>(new YourDbInitializer());

初期化クラスは次のようになります。

public class YourDbInitializer : DropCreateDatabaseIfModelChanges<YourDbContext>
{
    protected override void Seed(DiorContextBase context)
    {
        context.Database.ExecuteSqlCommand(
                "CREATE UNIQUE NONCLUSTERED INDEX Username_Unique " +
                "ON dbo.Users(username)");
    }
}

最新の EF リリースでは、移行http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspxを使用します

于 2012-05-23T10:06:11.307 に答える