gpt4 book ai didi

c# - EF4 如何在多对多关系中公开连接表

转载 作者:行者123 更新时间:2023-11-30 16:30:51 25 4
gpt4 key购买 nike

假设我有以下表格:

Essence、EssenceSet 和 Essence2EssenceSet,其中 Essence2EssenceSet 仅包含前两个表的 ID,以形成 M:M 关系。

在 EF 中,由于 Essence2EssenceSet 没有其他字段,因此它不会在模型中公开。我发现当我已经拥有创建记录所需的 2 个 ID 但不一定加载 Essence 和 EssenceSet 记录(只是它们的 ID)时,我发现很难将记录插入该表

有没有办法告诉 EF 不要以这种方式建模并始终包含连接表?还是我缺少一种更简单的方法来创建这些连接表记录?

最佳答案

您也可以在 EF 中创建 M:N 关系而无需检索对象:

using (var context = new MyContext())
{
var firstEntity = new FirstEntity { Id = firstId };
var secondEntity = new SecondEntity { Id = secondId; }

context.FirstEntities.Attach(firstEntity);
context.SecondEntities.Attach(secondEntity);

firstEntity.SecondEntities = new HashSet<SecondEntity>();
firstEntity.SecondEntities.Add(secondEntity);

context.SaveChanges();
}

无论如何,将联结表作为实体公开是可能的,但您将失去对 EF 的舒适感并回退到类似 SQL 的方法:

  1. 删除设计者创建的M:N关系
  2. 添加新实体
  3. 向表示外键的新实体添加两列
  4. 将新实体映射到联结表
  5. 将关联添加到相关实体
  6. 为添加的关系设置引用约束

关于c# - EF4 如何在多对多关系中公开连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com