Jef*_*Pry 6 c# mysql entity-framework
我正在使用实体框架代码优先使用MySQL数据源.
我定义ContactType.cs如下:
public class ContactType
{
[Key]
public int ContactTypeId { get; set; }
[Required, StringLength(30)]
public string DisplayName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在重建数据库之后,我如何让EF将一些联系类型插入到数据库中(没有SQL).通常,DB会重建为空白架构,但我想添加联系人类型,如(Home,Mobile,Office,Fax).
Sla*_*uma 17
您创建自定义数据库初始化程序并覆盖该Seed方法
public class MyContextInitializer
: DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
context.ContactTypes.Add(new ContactType { DisplayName = "Home" });
context.ContactTypes.Add(new ContactType { DisplayName = "Mobile" });
context.ContactTypes.Add(new ContactType { DisplayName = "Office" });
context.ContactTypes.Add(new ContactType { DisplayName = "Fax" });
//EF will call SaveChanges itself
}
}
Run Code Online (Sandbox Code Playgroud)
然后为导出的上下文注册此初始值设定项MyContext:
Database.SetInitializer<MyContext>(new MyContextInitializer());
Run Code Online (Sandbox Code Playgroud)
这是类的静态方法,Database应该在应用程序启动时在某处调用.您还可以将其放入上下文的静态构造函数中,以确保在创建第一个上下文实例之前设置了初始化程序:
static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
Run Code Online (Sandbox Code Playgroud)
DropCreateDatabaseIfModelChanges<T>您也可以从中获取DropCreateDatabaseAlways<T>或CreateDatabaseIfNotExists<T>更好地满足您的需求,而不是基本初始化程序.
| 归档时间: |
|
| 查看次数: |
6629 次 |
| 最近记录: |