EF的三種繼承模式EntityFramework

2021-09-02 21:52:50 字數 1384 閱讀 8381

三種繼承模式

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的...