我是Entity Framework的新手。是否可以直接从表中删除实体,而不是去清除与其他表的所有多对多连接?
var artist = _artistDetailsRep.SingleOrDefault(d => d.ArtistID == id);
_artistDetailsRep.Delete(artist);
_artistDetailsRep.SaveChanges();
此代码抱怨,因为艺术家与artistTypes有多对多的连接(约束)。那么有效的是
artist.ArtistTypes.Clear();
_artistDetailsRep.Delete(artist);
_artistDetailsRep.SaveChanges();
我需要明确清除所有艺术家类型,然后删除艺术家。有没有办法自动执行此操作?基本上它应该自己删除所有连接而不是我去说删除那些约束?
您可以建议更好地解决这些问题吗?
答案 0 :(得分:2)
您可以让SQL Server使用Cascading Deletes为您执行此操作。实体框架也支持使用Fluent API中的WillCascaseOnDelete()
方法,有关详细信息,请参阅this article。 This question也可以帮到你。
请记住,级联删除非常危险,但代码中的一个错误可能会擦除数据库中的完整表。