使用EF Core在ASP.Net Core 2中放置特定于模型的删除代码的位置

时间:2018-01-31 15:03:56

标签: asp.net-core ef-core-2.0

我一直想知道以下情况:

我使用EF Core设计了一个相当复杂的数据模型。 让我们说我得到了一个实体类A,其中包含对其他类的一对一,一对多和多对多的引用,这些引用又有进一步的关系等。

让我们说我的A级与B有1对多的关系,而且又与C有1对多的关系。 现在我需要删除A类的对象。删除必须删除所有引用的B对象,这反过来又必须删除所有引用的C对象。

在使用延迟加载的旧项目中,我没有遇到太多问题。如果尚未加载一个引用,则EF将加载它并删除需要删除的内容。所以我只是将我的删除特定方法放在A类中。 (它看起来像foreach(此b中的var b)mapper.delete(b)'

现在没有延迟加载,我想知道最好的方法是什么: 如果没有加载关系,我将获得nullpointer异常或违反外键约束,因为引用的对象不会被删除。

那么我应该将引用加载权放入该delete-Method中的模型类中吗?我应该在控制器或业务层之前加载那些引用然后调用删除吗?或者应该以不同的方式处理整个删除事件。

PS:我知道数据库可能只是做一些级联的东西,但是,我要说,我需要记录每个对象的删除或者必须做其他的代码内容。

0 个答案:

没有答案