まず、エンティティフレームワークコードを使用しようとしています。 今すぐサンプルデータをデータベースに入力したいと考えています。DropCrateDatabaseシードメソッドが呼び出されない
public class SampleData:DropCreateDatabaseAlways<MyContext>
{
protected override void Seed(MyContext context)
{
var products = new List<Product>
{
new Product{Name="prod1"},
new Product{Name="prod2"}
};
products.ForEach(i => context.Products.Add(i));
}
}
あるMyContextクラス:
public class MyContext:DbContext
{
public MyContext():base("MyCon")
{
this.Configuration.LazyLoadingEnabled = true;
}
public DbSet<Product> Products { get; set; }
}
たっ文字列クラス: はここに私のSampleDataClassある
<connectionStrings>
<add name="MyCon" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
そして私はApplication_Startメソッドで初期化子を設定します。
protected void Application_Start()
{
Database.SetInitializer(new Models.SampleData());
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
しかし何も起こらない。 問題は何ですか?
コンテキストを初期化し、 'DbSet'にアクセスする必要があります。アクションメソッドで。それはデータベースが作成されるときです。 –