0

在 EF Database First 中,当更改 ForeignKey(CommodityGroupID) 自动获取 Commodity 对象的 CommodityGroup,但在 EF Code First(4.3.1) 中没有这样做。

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);
        }
    }
}
4

1 回答 1

0

听起来您想要一个更改跟踪代理。您希望 CommodityGroup 导航属性在 FK 更改正确时自动更新吗?

有关更改跟踪代理的详细信息,请参阅MSDN 上的这篇文章。

MSDN 上的这篇文章显示了一些关于如何正确创建代理对象的测试代码。

这是一个新对象吗?如果是这样,您需要在 DbSet 上调用 CreateObject 函数,而不是使用 New Commodity()。

于 2012-08-09T20:19:47.420 回答