2013-01-31 107 views
18

我有兩個代碼第一個模型,Foo和FooState,其中Foo有一個可選的FooState。實體框架外鍵作爲主鍵代碼第一個

​​

但是當我試圖將外鍵添加到FooState像這樣

public class FooState 
{ 
    [Key] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    [ForeignKey("Foo")] 
    [Required] 
    public int FooId 
    public Foo Foo { get; set; } 
} 

這一切都因爲FooStateId真的使用FooId,因爲它的主鍵跌倒在這工作得很好。從數據庫的角度來看,這是有道理的。

但是,我想不必在保存FooState記錄時填充Foo的實例,但仍保留必需的屬性。

這將允許我在dto中發送FooId和state,而不必從數據庫中檢索整個Foo對象,如果我想更改其狀態。

我應該如何使用EF代碼先設置它?

回答

26

我想我會給這個鏡頭,它很好地工作。

public class FooState 
{ 
    [Required] 
    [Key] 
    [ForeignKey("Foo")] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    public Foo Foo { get; set; } 
} 
+8

你可以結合[Key,ForeignKey(「Foo」)] – Zakos

相關問題