繁体   English   中英

实体框架多对多作为表

[英]Entity-Framework Many-To-Many as Table

抱歉,我已经有一段时间没有使用 vanilla EntityFramework 了。 我有一些包含多对多关系的表。

public partial class Organization
{
    //...
    public virtual ICollection<aspnet_Roles> aspnet_Roles { get; set; }
}

在 SQL 中有一个中间表连接,我想从这个组织中删除角色。

我知道我可以从集合中删除实体,但是我需要为其他几个多对多引用执行此操作,因此我宁愿不将所有内容加载到 memory 中,只是为了将其从集合中删除。

当我在家里处理我的项目时,我只是在表格中添加了一个假属性,以便 EDMX 将所有内容生成为表格,但我怀疑我是否有权在工作中这样做。

我也不想运行原始 SQL,或将所有内容转换为使用 Code First。

有没有一种简单的方法可以从集合中删除引用而无需:

  1. 将所有内容加载到 memory
  2. 先转换成代码
  3. 运行原始 SQL 语句

您最好的选择似乎是在您的 EDMX model 中创建一个存储过程,该过程将根实体的主键作为输入参数,并在 SQL 端执行删除逻辑。 我看到这个解决方案的唯一缺点是你仍然需要查询根实体/实体的 ID 到 memory 但这不应该是一个很大的性能杀手。

在 SQL 端执行完整的删除逻辑是您可以获得的最佳性能。

如果您不熟悉 EDMX 中的 SP,这里是可以帮助您入门的官方文档。 EF 中的存储过程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM