2013-02-11 47 views

回答

5

您不需要設置它。您可以將「Set」指定爲虛擬對象,以便在運行時用導航屬性覆蓋它。即使您無法從對象域模型訪問它,實體框架也會自動在表上創建外鍵「SetId」。

你不需要設置它,但我個人喜歡有權訪問我的對象上的基礎外鍵id,因爲我可以指定與int的關係,而不必實例化相關對象。

編輯:添加示例代碼

具有以下類:

public class Card 
    { 
     public virtual int CardId { get; set; } 

     // belongs to a Set 
     public virtual int SetId { get; set; } 
     public virtual Set Set { get; set; } 
    } 

    public class Set 
    { 
     public int SetId { get; set; } 
     public string SetName { get; set; } 
    } 

我可以做這樣的事情:

var context = new Context(); //Db Code-First Context 

    var set = context.Sets.First(s => s.SetName == "Clubs"); //Get the "Clubs" set object 

    //Assign the set to the card 
    var newCard = new Card(); 
    newCard.Set = set; 

    //Save the object to the databae 
    context.Cards.Add(newCard); 
    context.SaveChanges(); 

或者做這樣的事情:

//Assign the set ID to the card 
var newCard = new Card(); 
newCard.SetId = 4; 

//Save the object to the databae 
context.Cards.Add(newCard); 
context.SaveChanges(); 

而對象將以相同的方式存儲。

想象一下,您正在發佈一個ViewModel到控制器。從視圖上的下拉列表中傳遞選定的標識並不是整個對象更容易。

+0

你能提供一個答案的例子嗎? – 2013-02-11 17:59:02

+0

當然,給我幾分鐘,我會用一些代碼更新它 – amhed 2013-02-11 18:22:01

+0

@ Mr.Young例子添加到響應:) – amhed 2013-02-11 18:34:27

相關問題