【问题标题】:Adding property to entity framework class向实体框架类添加属性
【发布时间】:2012-06-28 14:26:49
【问题描述】:

对于使用实体框架的 wpf 应用程序,我需要将实体属性添加到实体类之一。例如:有一个多对多关系,有两个表和一个连接表。

客户:ID、姓名、地址。 产品:ID、名称

CustomerProduct : CustomerID, ProductID

我正在尝试向我的自动生成的实体数据类 Cutomer 添加一个属性 colProducts,如下所示:

    public partial class Customer
{
    public Products  colProducts;
    public Products ColProducts
    {
        get { return colProducts; }
        set 
        {
            colProducts = ???? 
        }
    }

}

但我发现关系缺失。这里有什么问题??我怎样才能获得与客户相关的产品。我这样做是为了方便 wpf 数据绑定。

【问题讨论】:

    标签: wpf database entity-framework


    【解决方案1】:

    首先,如果这些关联存在于数据库中(外键或多对多表),Entity 将创建这些关联。如果您可以控制数据库,则应该这样做。它比手动实体方法更简单,并且有助于数据库保持有效。

    如果您不能或不想这样做,您可以手动创建实体关联。这些步骤采取from here

    1. 在 EF 设计器中选择两个实体中的任意一个,然后在右键菜单中选择“添加关联”选项。
    2. 适当地指定每一边的多重性并创建关联
    3. 选择关联并选择“表映射”选项
    4. 现在选择包含外键列的表,即 Messages
    5. 在列列表中,它将显示引用表的主键,然后选择相应的外键,即我们的例子中的 ConversationId
    6. 从引用实体中删除外键属性,即消息实体中的 ConversationId 属性

    【讨论】:

    • 感谢您的回复,我已经关联到 CustomerProducts ,但我想通过添加产品属性来覆盖实体类。这样我就可以在一个班级下拥有它。有可能吗?
    • 是的,但这不是一个好主意。您应该在上下文中使用导航属性,或者在查询期间使用Include() 以确保它们被加载。
    【解决方案2】:

    如果 CustomerID 和 ProductID 形成表 CustomerProduct 的复合主键,EF 应该生成正确的多对多关系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      相关资源
      最近更新 更多