2016-10-01 68 views
1

我有3類一零一個關係EF codefrist

public class StockDef 
{ 
    public int Id { get; set; } 
    public int StockType { get; set; } 
    public virtual OfficeStock SayanStock { get; set; } 
    public virtual AgentStock AgentStock { get; set; } 
    //.... 
} 

public class OfficeStock 
{ 
    public virtual StockDef StockDef { get; set; } 
    //.... 
} 

public class AgentStock 
{ 
    public virtual StockDef StockDef { get; set; } 
    //...... 
} 

每StockDef對象絕對有(一個或OfficeStock一個AgentStock)。
和每個OfficeStock肯定有一個StockDef。
以及每個AgentStock都有一個StockDef。
我怎樣才能實現這一點,在EF代碼首先流利的API?
tnx

+0

你需要,如果你想檢查約束:一個'officeStock'或一個'AgentStock'爲'StockDef',我認爲,這不是流利的Api可能。但你可以手動添加它。選中此鏈接(http://stackoverflow.com/questions/34245449/is-it-possible-to-add-check-constraint-with-fluent-api-in-ef7) – iamnapo

+0

tnx for response @iamnapo
I應該如何在數據庫中的最終表? – memo

回答

0

你不能用流利的api配置StockDef(約束「只能編譯一個屬性」),你必須添加一個實現IValidatableObject接口的自定義驗證。

您還可以在數據庫中添加約束(觸發器?),以避免別人插入錯誤的記錄。

此外,約1-1關係的配置,你可以在這裏看看 Code First migration when entities have cross references with foreign keys

+0

爲什麼?你說這是不可能的StockDef只能有一個OfficeStock或AgentStock? – memo

+0

大概我不明白。 StockDef可以有一個OfficeStock和一個AgentStock?我的意思是,可以'StockDef.OfficeStock'和'StockDef.AgentStock'都編譯? – bubi

+0

StockDef可以有一個OfficeStock或者一個AgentStock – memo