有没有办法检测上一个
我自己跟踪对象的更新、删除和插入等更改,但当存在外键关系时,实体框架会自动删除子引用,这样我就失去了跟踪。
例如,如果我删除一个学生,我会跟踪到我已经删除了一个学生。
但是当我删除一个班级时,它会自动删除班级中的所有学生,因为我为它们设置了外键关系。问题在于,我只能跟踪到一个班级被删除了,而不知道有多少学生在班级中被删除了。
一种方法是在删除班级之前计算班级中的学生数量,但这是对数据库的不必要访问。
还有其他方法吗?
ObjectContext.SaveChanges()
方法所做的更改?我自己跟踪对象的更新、删除和插入等更改,但当存在外键关系时,实体框架会自动删除子引用,这样我就失去了跟踪。
例如,如果我删除一个学生,我会跟踪到我已经删除了一个学生。
但是当我删除一个班级时,它会自动删除班级中的所有学生,因为我为它们设置了外键关系。问题在于,我只能跟踪到一个班级被删除了,而不知道有多少学生在班级中被删除了。
一种方法是在删除班级之前计算班级中的学生数量,但这是对数据库的不必要访问。
还有其他方法吗?
SaveChanges
或订阅OnSavingChanges
(您可以在此处找到示例),但是正如您所看到的,它并不是完全可靠的,并且很快会退化为具有大量if
或甚至反射的代码,这些都会影响性能。如果您使用 Sql Server,则有各种更改跟踪选项。这些选项将默认跟踪级联删除。 - Gert Arnold