【发布时间】:2012-06-15 07:08:49
【问题描述】:
我有数据库方案,其中产品表与颜色表有多对多的关系。我正在使用 EF 并创建 POCO 对象:
public class Product
{
public Guid Id {get;set;}
public ICollection<Color> Colors {get;set;}
}
public class Color
{
public Guid Id {get;set;}
public ICollection<Product> Products {get;set;}
}
在许多情况下,有必要删除与产品相关的所有颜色并设置新颜色。所以我想删除所有多对多关系,但不知道相关颜色的 id。是否可以在不对 db 进行额外查询的情况下删除它们?我知道我可以只编写存储过程来删除指定产品与颜色的所有关系,但最好通过实体框架找到通用方法。
【问题讨论】:
-
点击这个链接:[stackoverflow.com/questions/937140/…欢呼!
-
我不想删除产品或颜色本身,我只想删除特定产品与所有颜色之间的所有关系。所以我不能使用级联删除,因为没有删除相关实体,只有删除关系。
-
您可以将您的实体(产品或颜色)存储在一个临时变量中,并在删除后以不同的 id 插入它。我认为您找不到比这更有效的方法。
-
在我的问题中只有一个简单的例子。在真实模型中,我对产品和颜色也有很多关系。因此,如果我删除颜色或产品,我会删除所有关系。所以我必须存储所有产品关系,然后删除产品,然后插入所有没有颜色关系的产品。这是非常低效的,在这种情况下我必须加载所有其他产品关系。
标签: entity-framework-4 ef-code-first many-to-many