相信剛接觸EF Code First 的時候 都會被他的強大而震撼。
然而隨着開發的深入,肯定會有修改之前結構的情況,例如添加或刪除一個自動,修改一個字段屬性。
EF本身也提供了一些功能:
Database.SetInitializer<XXContext>(
new DropCreateDatabaseIfModelChanges<XXContext>());
但是如果在生產環境這種方式肯定是不可取的。
最靈活的方式,也是最原始的方式就是放棄EF自動同步的功能,自己修改實體類,自己修改數據庫結構。
操作方法如下:
要先刪除數據庫中dbo.EdmMetadata這張表,或者修改表名也是可以的。
比如我現在往Category類中加一個Status字段
public string Status { get; set; }
然後往數據庫的Categories表中也添加Stauts這個字段,這樣程序還是能照常運行的,不會清空數據庫原有內容。
不過這樣以後,code first的功能就無法使用了,如果你建立新的model,它不再自動幫你創建表了。
當然一個系統已經進入了生產環境,數據結構不可能變動太大,放棄EF的自動同步功能也是值得的。