在相同的表之间具有M:M和1:M

时间:2015-10-27 12:03:39

标签: entity-framework

我有2个实体。一个是Team,另一个是Company。一个团队可以属于多个公司,一个公司可以属于多个团队。

因此,使用实体框架我在TeamCompany之间建立了M:M关系。

公司可以是不同类型的。说:Type-AType-B

现在,每当属于A类公司(仅限A型而不是B型)的人在团队中创建一行时,那些人CompanyId以及其他一些公司ID&# 39;在队伍表中。

所以我觉得TeamCompany之间也必须有1:M的关系。

有谁能建议我如何在两张相同的桌子之间同时拥有1:M和M:M?

1 个答案:

答案 0 :(得分:0)

注意:我不完全理解你的措辞,但我认为我的答案排除了让我理解A和B类型细节的必要性。

如果您已经建立了多对多关系,那么通过业务逻辑限制您可以建立的连接数量(在特定情况下)似乎更容易,而不是扩展数据模型结构。

添加一对多关系意味着对于类型为A的公司,您希望属于它的团队由该公司拥有,而不是链接到多个公司,对吗?

因此,您需要阻止向同一个团队添加第二家公司 再说一遍:

  • 保存CompanyTeam时(我假设调用公司和团队之间的中间表),检查同一团队是否已有CompanyTeam行。
  • 如果是,请检查该公司(已在现有的CompanyTeam中链接)是否为A类。
  • 如果是A类,拒绝当前的保存操作(作为A类公司无法将其团队与其他公司关联。
  • 可选:如果当前保存操作与现有链接公司属于同一公司,可能允许保存操作继续吗?
  • 在所有其他情况下(如果上述步骤失败),允许保存操作。

这似乎是一个解决方案,因此您无法将A类公司的团队与其他公司联系起来,这就是我认为您想要的。 如果我误解了,请澄清,我会更正我的答案。