1

EFのSeedメソッドを使用してデータベースにサンプルデータを入力しようとしていますが、実行しようとするとデータが入力されません。

誰もが理由を知っていますか?ありがとう。

DBContext:

public void Seed(EFloristEntities context)
{
    new List<Product>
    {
        new Product() { Id = 1, ProductName = "Product 1", ProductDescription = "a", Price = 1.0}
    }.ForEach(i => context.Products.Add(i));

    context.SaveChanges();
}

public DbSet<Product> Products { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetails> OrderDetails { get; set; }
public DbSet<Cart> Cart { get; set; }

私のイニシャライザー:

public class CreateInitializer : CreateDatabaseIfNotExists<EFloristEntities>
{
    protected override void Seed(EFloristEntities context)
    {
        context.Seed(context);

        base.Seed(context);
    }
}

Global.aspx:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EFloristEntities>()); 
new EFloristEntities().Database.CreateIfNotExists();

Database.SetInitializer(new CreateInitializer());
4

3 に答える 3

0

独自のシード コードを呼び出した後に、基本イニシャライザを呼び出しているようです。

于 2013-07-29T16:58:09.963 に答える
0

グローバルファイルでデータベースをまったく初期化していません。次のコードを実行する必要があります。

EFloristEntities.Database.Initialize(true)

カスタム初期化子を使用する場合は、このコードをそのDatabase.SetInitializer(new CreateInitializer())呼び出しの下に配置することをお勧めします。

于 2012-12-17T14:33:10.467 に答える
0

DropCreateDatabaseIfModelChanges を使用するように初期化子を構成しました。DropCreateDatabaseAlways で一度置き換えてみてください。

于 2012-12-17T15:03:28.237 に答える