Jus*_*ura 11 .net c# asp.net-mvc entity-framework
我在自定义数据库初始化程序中调用Seed方法时遇到问题.我正在使用EF 5.0并具有以下代码:
public static class MyDatabase
{
public static void Initialize()
{
Database.SetInitializer(new MyInitializer());
}
}
public class MyInitializer : DropCreateDatabaseAlways<MyContext>
{
protected override void Seed(MyContext context)
{
base.Seed(context);
context.Roles.Add(new Role
{
ID = 1,
Name = "User",
});
context.Roles.Add(new Role
{
ID = 2,
Name = "Admin",
});
context.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
这两个类存在于MVC应用程序的单独类库中.在Global.asax
,我称之为Initialize()
方法:
MyDatabase.Initialize();
Run Code Online (Sandbox Code Playgroud)
数据库创建得很好,只是Seed(MyContext context)
方法没有调用,没有数据放入我的数据库.
小智 13
您的数据库将在以后使用上下文时创建,或者您可以始终通过在Global.asax.cs中的Application_Start()方法中使用您的上下文来强制创建它:
System.Data.Entity.Database.SetInitializer(new MyInitializer());
MyContext db = new MyContext();
db.Database.Initialize(true);
Run Code Online (Sandbox Code Playgroud)
Seed
一旦您将第一个 SQL 查询发送到数据库(而不是在Application_Start
. 例如:
using (var ctx = new MyContext())
{
var rolesCount = ctx.Roles.Count(); // should return 2
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11319 次 |
最近记录: |