2012-08-08 128 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