三種繼承模式
table per type(tpt)繼承 乙個表對應乙個型別
table per class hierarchy(tph)繼承 乙個表對應乙個類的層級(父類和子類的集合)
table per concrete class(tpc)繼承 乙個表對應乙個實體類(忽略虛類)
定義乙個虛類person ,並繼承出兩個子類
public abstract class person //虛類
[maxlength(20, errormessage = "名稱長度不能大於8")]
public string name
public string remark
}[table("employee")]
public class employee : person
}[table("vendor")]
public class vendor : person
}
tph繼承
dbcontext這麼寫
class mycontext : dbcontext
public dbsetvendors
public dbsetemployees
protected override void onconfiguring(dbcontextoptionsbuilder optionsbuilder)
}
將會在資料庫建立一張表 peoples 包含列: id,name,remark,salary,hourlyrate,discriminator
其中列discriminator是ef自動產生用來區分employee或者vendor ;欄位的取值也是vendor或employee
tpc繼承
dbcontext如果這麼寫
class mycontext : dbcontext
//不要這句
public dbsetvendors
public dbsetemployees
protected override void onconfiguring(dbcontextoptionsbuilder optionsbuilder)
}
將會在資料庫建立兩張表employee和vendor包含列:
employee: id,name,remark,salary
vendor: id,name,remark,hourlyrate
tpc繼承產生的兩張表的主鍵會重複,導致ef使用person的時候產生主鍵衝突,所以不推薦使用這種方式
第一種tpt繼承就是在資料庫產生三張表,具體做法可以自行研究一下
EF開發三種模式
入門的參考資料 本篇的參考資料 教程說的很明白,雖然聽不太懂,不過也能看懂 我該用哪個工作流?換句話說,也就是使用ef有哪幾種方式,哪種方式更適合你,更適合你當前要開發的專案。一 該不該使用ef 這個問題很複雜,個人認為,大中型專案,不宜使用ef。中小型專案,可以使用ef。二 使用ef的三種方式 1...
EF框架的三種模式
database first 資料庫優先,傳統的表驅動方式建立edm,然後通過edm生成模型和資料層 除生成實體模型和自跟蹤實現模型,還支援生成輕型dbcontext。簡歷理解就是先設計資料庫,建立好資料庫對映成物件和上下文。model first 模型優先,先建立edm模型,再生成ddl資料庫指令...
EF框架之三種模式
使用ef之前必須要對ef有個巨集觀的了解.學習任何一種技術都要像門衛一樣問幾個問題.第一,它是誰?第二,從 來?第三,到 去?默念一遍 不謀全域性者,不足謀一域.其實entity framework的底層也是呼叫ado.net,它是更高層次的封裝.作為資料訪問的技術,entityframework的...