1

我刚刚开始了一个使用 LINQ to SQL 的项目,并且遇到了多对多问题。我找到了很多可能的解决方案,我选择了这个

无论如何,受影响的数据库表如下所示:

Customer (idcustomer,other stuff..)
Customer_Role(idcustomer, idrole, other_attribute_I_want_to_keep )
Role(idrole, other stuff)

现在,我该如何处理“other_attribute_I_want_to_keep?最好是这样:

客户 c.Role.other_attribute_I_want_to_keep,但我找不到可能的解决方案。

谢谢

4

1 回答 1

2

您不能为此使用多对多。BelongsTo相反,您需要将 CustomerRole 设置为既是 Customer 又是 Role 的一流对象。Customer 和 Role 应该依次HasOne为 CustomerRole 声明一个属性。然后你可以这样做:

c.CustomerRole.Role
c.CustomerRole.OtherAttribute

您可以将快捷方式Role属性Customer定义为:

[NotMapped]
public Role Role { 
    get { return CustomerRole == null ? (Role)null : CustomerRole.Role; } 
    set { if (CustomerRole == null)
            CustomerRole = new CustomerRole(){ Role = value };
          else
            CustomerRole.Role = value;
    }
}

但请注意,在构建复杂查询时使用此快捷方式可能会遇到麻烦。

于 2012-08-31T15:45:48.753 回答