2012-08-08 135 views
0

首先在更改ForeignKey(CommodityGroupID)時自動獲取CommodityGroup的商品對象,但是在EF Code First(4.3.1)中沒有這樣做。實體框架數據庫優先和EF代碼先在EF數據庫中獲取關係對象編號

public class Commodity 
     { 
      public int CommodityID { get; set; } 
      public string MadeBy { get; set; } 
      public decimal ServiceTimePrice { get; set; } 
      public decimal QCPrice { get; set; } 
      public int ServicePoint { get; set; } 
      public string Note { get; set; } 
      public int CommodityGroupID { get; set; } 
      [ForeignKey("CommodityGroupID")] 
      public virtual CommodityGroup CommodityGroup { get; set; } 
    } 
    public class CommodityGroup 
    { 
     public int CommodityGroupID { get; set; } 
     public string CommodityGroupName { get; set; } 
     public virtual ICollection<Commodity> Commodities { get; set; } 

    } 

此屬性在Edmx文件(數據庫優先)中定義,我應該首先在ef代碼中定義此代碼?

[BrowsableAttribute(false)] 
[DataMemberAttribute()] 
public EntityReference<CommodityGroup> CommodityGroupReference 
{ 
    get 
    { 
     return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CommodityGroup>("GaamRepairModel.FK_Commodity_CommodityGroup", "CommodityGroup"); 
    } 
    set 
    { 
     if ((value != null)) 
     { 
      ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<CommodityGroup>("GaamRepairModel.FK_Commodity_CommodityGroup", "CommodityGroup", value); 
     } 
    } 
} 
+0

你是否啓用延遲加載? – 2012-08-08 05:14:04

+0

你可以請你的代碼改變/獲取數據? – 2012-08-08 05:20:03

+0

是的,LazyLoadingEnabled = true – Hono 2012-08-09 19:55:43

回答

0

這聽起來像你想要一個變更跟蹤代理。您希望CommodityGroup導航屬性在FK更改時自動更新?

有關更改跟蹤代理的詳細信息,請參閱this post on MSDN

This post on MSDN shows how some code on how to test of your proxy object is being properly properly。

這是一個新對象嗎?如果是這樣,您需要在DbSet上調用CreateObject函數,而不是使用New Commodity()。

+0

我測試了isProxy()返回true。 – Hono 2012-08-10 07:08:19