ef 有 中的模型類的配置有 dataannotations、fluentapi 兩種;
1.dataannotations:實體類屬性上標註attribute;必填字段標註[required] 、字段長度[maxlength(5)]用 、可空字段用 int? ;如果欄位在資料庫有預設值,則要在屬性上標註[databasegenerated]
這種方式比較方便,但是 耦合度太高, 一般的類最好是 poco (plain old c# object
沒有繼承什麼特殊的父類,沒有標註什麼特殊的 attribute ,沒有定義什麼特殊的方法 ,就是一堆普通的屬性; );。 不符合大專案開發的要求。 微軟推薦使用 fluentapi 的使用方式,
2.fluentapi:
例如有乙個person類放到 modelconfig 資料夾下(personconfig、 、entityconfig這樣的 名字都不是必須的)
class personconfig: entitytypeconfiguration}
建立dbcontext類
publicclass
person
public
string name
public datetime createdatetime
}
則建立乙個personconfig類
publicclass
mydbcontext:dbcontext
protected
override
void
onmodelcreating(dbmodelbuilder modelbuilder)
public dbsetpersons
}
modelbuilder.configurations.addfromassembly(assembly.getexecutingassembly()代表從這句話所在的程式集載入所有的繼承自 entitytypeconfiguration 為模型配置類。
還有很多載入配置檔案的做法(把配置寫到 onmodelcreating 中或者把載入的**寫死到 onmodelcreating 中 ),但是這種做法是最符合大專案規範的做法。
和以前唯一的不同就是:模型不需要標註 attribute;編寫乙個 ***config 類配置對映關係;dbcontext 中 override onmodelcreating
建立多個表:則需要建立多個表的的實體類,config類,並且在dbcontext中增加多個dbset型別的屬性即可
EF 分離實體
具體步驟 新建測試專案 如圖 其中respository和model層均為類庫專案,1.在respository層新增ado.net實體資料模型,2.複製model.tt檔案到model層,這是會發生乙個錯誤不用理會它,開啟model.tt檔案,修改const string inputfile mo...
EF系列 ModelFirst實體優先
圖一 選擇控制台程式 圖二 選擇ado實體模型圖三 選擇ado實體模型 圖四 選擇模型型別 圖五 生成的介面 圖六 新增新實體圖七 新增新實體圖八 新增新實體 圖九 設定屬性 圖十 再建立乙個實體 圖十一 新增關係 圖十二 選擇合適的關係 圖十三 關係後的效果圖 圖十四 空白資料庫 圖十五 根據模型...
EF載入實體的方式
原文 loading related entities ef載入資料的方式 預載入 eager loading 延遲載入 lazy loading 顯示載入 explicit loading 預先載入會載入所有相關的實體,通過include方法來實現 1 using var context new ...