C# 实体框架多对多as表

C# 实体框架多对多as表,c#,.net,entity-framework,C#,.net,Entity Framework,抱歉,我已经有一段时间没有使用vanilla EntityFramework了。 我有几个包含多对多关系的表 public partial class Organization { //... public virtual ICollection<aspnet_Roles> aspnet_Roles { get; set; } } SQL中有一个中间表连接,我想删除这个组织中的角色 我知道我可以从集合中删除实体,但是我需要为其他几个多对多引用执行此操作,因此我不希望

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

public partial class Organization
{
    //...
    public virtual ICollection<aspnet_Roles> aspnet_Roles { get; set; }
}
SQL中有一个中间表连接,我想删除这个组织中的角色

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

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

我也不想运行原始SQL,或者先将所有内容转换为使用代码

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

将所有内容加载到内存中 先转换为代码 运行原始SQL语句
您最好的选择似乎是在EDMX模型中创建一个存储过程,该过程将根实体的主键作为输入参数,并在SQL端执行删除逻辑。我看到这个解决方案的唯一缺点是,您仍然需要将根实体的/实体的ID查询到内存中,但这不应该是一个大的性能杀手

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

如果您不熟悉EDMX中的SP,以下是可以帮助您启动的官方文档。

是的,但是我会丢失一些审核日志。哦,我看不到任何其他方法:/您可以从数据库中选择有关已删除行的所需信息,以便在删除后手动构建审核日志记录。或者,如果您在数据库中进行审计日志记录,那么就更简单了,SP可以负责插入日志记录。是的,我可能最终不得不这样做。