回到目錄 我為什麼會來 在傳統的大型系統設計中,資料庫建模是個比開發更早的環節,先有資料庫,然後是ORM模型,最後才是開發程式,而這種模型在EF出現後發生了轉變,而且有可能將來會被code first取代,因為你的關係型資料庫沒有必要定死,你在部署網站時,沒人願意先建立一大堆SQL語句,誰都願意在I
我為什麼會來
在傳統的大型系統設計中,資料庫建模是個比開發更早的環節,先有資料庫,然後是ORM模型,最後才是開發程式,而這種模型在EF出現後發生了轉變,而且有可能將來會被code first取代,因為你的關係型資料庫沒有必要定死,你在部署網站時,沒人願意先建立一大堆SQL語句,誰都願意在IIS上運行後,資料庫自動生成,無論是sqlserver,orcale,mysql它如果都是自動生成,那該多爽!事實上,這種開發模型已經愉愉的進入了我們的世界里,尤其是在第三方伺服器部署時,這種code first讓你感覺更加方法,應該你不用在一個個建立數據表了,像香港雲這種第三方伺服器,普通用戶不支持SQL命令,建立表只能一個一個的建立。
數據初始化
而當你的資料庫被建立後,數據表的信息也可以同時被初始化的,這也是今天要說的,它分於兩叔,第一在config里開啟這個初始化功能,第二建立自己的Initializer類,讓它實現DropCreateDatabaseIfModelChanges<YourContext>泛型方法即可,具體看一下代碼
一 配置啟用,將web.config里的entityFramework改這樣
<entityFramework> <contexts> <context type="Lind.DDD.Manager.ManagerContext, Lind.DDD.Manager"> <databaseInitializer type="Lind.DDD.Manager.ManagerInitializer, Lind.DDD.Manager" /> </context> </contexts> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v12.0" /> </parameters> </defaultConnectionFactory> </entityFramework>
二 編寫初始化類代碼
/// <summary> /// 資料庫初始化 /// </summary> public class ManagerInitializer : DropCreateDatabaseIfModelChanges<ManagerContext> { protected override void Seed(ManagerContext context) { try { #region 部門表 var department = new WebDepartments { About = "", DepartmentName = "公司", DeptLevel = 0, Operator = "admin", ParentID = null, SortNumber = 0, Status = 1, UpdateDate = DateTime.Now, }; context.WebDepartments.Add(department); context.SaveChanges(); #endregion #region 菜單表 var menu = new WebManageMenus { About = "", LinkUrl = "", MenuLevel = 1, MenuName = "根", Operator = "admin", ParentID = null, SortNumber = 0, Status = 1, UpdateDate = DateTime.Now, }; context.WebManageMenus.Add(menu); context.SaveChanges(); #endregion base.Seed(context); } catch (Exception) { throw; } } }
感謝各位的閱讀,希望本文章可以幫到您!