Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 在相同的桌子之间有M:M和1:M的_Entity Framework - Fatal编程技术网

Entity framework 在相同的桌子之间有M:M和1:M的

Entity framework 在相同的桌子之间有M:M和1:M的,entity-framework,Entity Framework,我有两个实体。一个是团队,另一个是公司。一个团队可以属于多个公司,一个公司可以属于多个团队 因此,使用实体框架,我在团队和公司之间建立了M:M关系 一家公司可以是不同类型的。说:Type-A和Type-B 现在,每当属于a型公司(仅a型而非B型)的人员在团队中创建一行时,该人员CompanyId以及团队表中的其他公司Id 所以我觉得在团队和公司之间也必须有1:M的关系 有谁能建议我如何在两个相同的表之间同时使用1:M和M:M吗?注意:我不完全理解你的措辞,但我认为我的回答排除了我理解A型和B型的

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

因此,使用实体框架,我在
团队
公司
之间建立了M:M关系

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

现在,每当属于a型公司(仅a型而非B型)的人员在团队中创建一行时,该人员
CompanyId
以及团队表中的其他公司Id

所以我觉得在
团队
公司
之间也必须有1:M的关系


有谁能建议我如何在两个相同的表之间同时使用1:M和M:M吗?

注意:我不完全理解你的措辞,但我认为我的回答排除了我理解A型和B型的细节的需要

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

添加一对多关系意味着对于a型公司,您希望属于它的团队只归该公司所有,而不是链接到多个公司,对吗

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

  • 保存CompanyTeam时(我假设Company和Team之间的中间表被调用),检查同一个团队是否已经有CompanyTeam行
  • 如果是,请检查该公司(链接到已存在的公司系统中)是否为A类型
  • 如果是A类,则拒绝当前保存操作(因为A类公司不能将其团队与其他公司关联)
  • 可选:如果当前保存操作与现有链接公司是同一公司,是否允许继续保存操作
  • 在所有其他情况下(如果上述任何步骤失败),允许执行保存操作
这似乎是一个解决方案,使您无法将a型公司的团队与其他公司联系起来,这就是我认为您想要的。

如果我误解了,请澄清,我会更正我的答案。

您能否再次解释一下“那么团队表中的人员公司Id以及其他公司Id”部分?@LiranBo:太复杂了。我能解释的是,每当创建一个新团队时,我都需要存储一些公司ID。删除了MVC标签和标题中的标签。这里与MVC有什么关系?这与你的要求无关。请使用你正在使用的语言进行标记。好的,那么主要问题是创建两个M:M和1:M的关系?你是先使用代码还是先使用模型?@LiranBo:我先使用代码。问题是我已经有了公共虚拟ICollection Companys{get;set;}的入口,要创建1:M,我需要再次使用它…dat怎么可能。。?