如何删除与其他表有多对多关系的实体?

时间:2013-11-26 09:33:03

标签: entity-framework asp.net-mvc-4

我是Entity Framework的新手。是否可以直接从表中删除实体,而不是去清除与其他表的所有多对多连接?

var artist = _artistDetailsRep.SingleOrDefault(d => d.ArtistID == id);

_artistDetailsRep.Delete(artist);
_artistDetailsRep.SaveChanges();

此代码抱怨,因为艺术家与artistTypes有多对多的连接(约束)。那么有效的是

 artist.ArtistTypes.Clear();
_artistDetailsRep.Delete(artist);
_artistDetailsRep.SaveChanges();

我需要明确清除所有艺术家类型,然后删除艺术家。有没有办法自动执行此操作?基本上它应该自己删除所有连接而不是我去说删除那些约束?

您可以建议更好地解决这些问题吗?

1 个答案:

答案 0 :(得分:2)

您可以让SQL Server使用Cascading Deletes为您执行此操作。实体框架也支持使用Fluent API中的WillCascaseOnDelete()方法,有关详细信息,请参阅this articleThis question也可以帮到你。

请记住,级联删除非常危险,但代码中的一个错误可能会擦除数据库中的完整表。