我有一個抽象類UserProfile
,它有一個子類Tenant
,所以關係是1:1 - 一個'用戶'是一個'承租人'。實體框架代碼首先,與繼承的1:1關聯
這是以1:1的比例實現table-per-type繼承的正確方法嗎?
[Table("UserProfile")]
public abstract class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
// ...
}
[Table("Tenant")]
public class Tenant : UserProfile
{
public string PersonalDescription { get; set; }
// ...
// Navigation property on dependant end
public virtual UserProfile UserProfile { get; set; }
}
上午我在放置導航屬性的關係的依賴到底是否正確?或者它有什麼結局呢?
我是否還需要將
Tenant
類型的導航屬性在UserProfile
?最後,我讀到,值得讓模型
virtual
中的每個屬性幫助EF進行變更跟蹤 - 這是否有必要?
如果它是一種按表類型的方案,則不需要導航屬性。 Tenant不包含UserProfile,Tenant是UserProfile。 – SWeko
好吧,但EF如何知道這是一個每桌類型的情況?我是否通過將派生類放在派生類上來明確地強制執行它? – MattSull
嗯,是的。 EF應該能夠從'Tenant'表中獲取'Tenant'字段的值,以及從'UserProfile'表中的'UserProfile'繼承的字段。看起來神奇,但它的作品,至少對我來說:) – SWeko