EF架構(gou)——code first開發(fa)中,在修改實體時,自動影響到數據(ju)表上
EF領域由code first,data first和model first三種模式,目(mu)前(qian)對(dui)于小型項目(mu)開發用code first就可以,操作靈活。
使用code first模式時,如果(guo)(guo)當(dang)實體添加、修改后(hou),如果(guo)(guo)希望直接(jie)反映到數(shu)據表上,需要做一些設(she)置(zhi);
比如(ru),添加了(le)一個userbase類型,希望把它(ta)反(fan)映到(dao)數據(ju)表上,我們可以(yi)這樣做:
public class DataContext : DbContext, IDataContext {
public DataContext() : base(DataContext.GetCS()) { InitDbSets(); } public IDbSet<Category> Categorys { get; private set; }
private void InitDbSets()
{
UserBases = this.Set<UserBase>();
Init();
}
public static void SetInitializer(InitializerTypes InitType) { switch (InitType) { case InitializerTypes.Standard: Database.SetInitializer(new StandardInitializer()); break; case InitializerTypes.ReCreateAlWays: Database.SetInitializer(new ReCreateInitializer()); break; case InitializerTypes.ReCreateByModify: Database.SetInitializer(new ReCreateWhenModifiedInitializer()); break; default: break; } } /// <summary> /// DBContext初始化
/// </summary> public static void Init() { Database.DefaultConnectionFactory = new SqlConnectionFactory(); if (System.Diagnostics.Debugger.IsAttached) { DataContext.SetInitializer(DataContext.InitializerTypes.ReCreateByModify); } else { DataContext.SetInitializer(DataContext.InitializerTypes.Standard); } }
}
這樣當我們改變實體時,當有對新添加或者修改的實體進行引用,它的最新版本會直接反映到原始數據表上。
回到目錄