Cic*_*cio 2 entity-framework-6
我正在使用EF与Code First方法......现在我必须用一些数据填充数据库...但我不能轻易做到... Simething不清楚...我用google搜索但我找到的每个解决方案都假设我必须创建一个自定义Initilization ...但我不想创建自定义初始化..
我需要的是一种方法,每次我启动一些测试DROP数据库,重新创建它并用一些数据填充它.
我试图做的是:
public PublicAreaContext()
: base("PublicAreaContext")
{
Database.SetInitializer<PublicAreaContext>(new DropCreateDatabaseAlways<PublicAreaContext>());
}
Run Code Online (Sandbox Code Playgroud)
然后我试图Seed在Configuration类中强制执行该方法.所以:
internal sealed class Configuration : DbMigrationsConfiguration<PublicAreaContext>
{
protected override void Seed(PublicAreaContext context)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试调试时,我从不进入种子方法......我进入了Configuration类的构造函数,但不是种子...为什么?
Thanx的帮助
你混淆种子方法.创建数据库时可以使用一个初始化程序,还有一个用于迁移.见http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/
由于您使用的是DropCreateDatabaseAlways,因此不会运行迁移,因此请执行以下操作:
public static class MyDatabase
{
public static void Initialize()
{
Database.SetInitializer(new MyInitializer());
}
}
public class MyInitializer : DropCreateDatabaseAlways<PublicAreaContext>
{
protected override void Seed(PublicAreaContext 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)
其他例子:http: //www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm
http://www.techbubbles.com/aspnet/seeding-a-database-in-entity-framework/
| 归档时间: |
|
| 查看次数: |
8953 次 |
| 最近记录: |