2015-02-09 69 views
1

我第一次使用實體框架的第一個代碼方法,並且我設法創建了所有實體併成功地從它們生成了一個數據庫。我在這裏看了一些關於這樣做的問題,並且我注意到如果屬性發生變化,沒有人編寫更新外鍵的代碼。C#代碼優先:屬性更改時外鍵是否自動更新?

這是從我的實體之一的一些代碼:

[Required] 
    [ForeignKey("CompanyId")] 
    private int CompanyId; 

    public virtual Company Company 
    { 
     get 
     { 
      return Company; 
     } 
     set 
     { 
      Company = value; 
      CompanyId = value.Id; //is this needed? 
     } 
    } 

所以我的問題是:我是否需要手動設置CompanyId當公司屬性更改,就像我在上面的代碼?或者這是否自動發生?

希望這個問題很清楚。在此先感謝 山姆

回答

1

顯式設置外鍵屬性是不需要的,並會在調用SaveChanges()時自動完成。

但是,如果由於某種原因,在調用SaveChanges()之前需要更新外鍵屬性,則可能需要手動完成。

而且,當設置一個新的/分離Company(這通常不具有Id設置尚),該CompanyId屬性將與新產生的-ID在調用SaveChanges()也被更新。

欲瞭解更多信息,請參閱EF的Relationships and Navigation Properties