在删除该记录之前,检查是否存在对特定模型记录的任何引用的最佳做法是什么?基本上,我有一个表示图像的模型,以及与图像相关的所有元数据。其他模型将引用一个或多个图像(取决于模型)。
比方说,我有一个“Item”,它有一个“MainImage”和一个“AltImage”,两者都只是对Image模型的引用。如果我删除了一个项目记录,我必须检查这两个图像是否被任何其他项目或任何其他表格引用,如果没有,则删除该图像。
我该怎么做呢?
答案 0 :(得分:0)
由于您使用的是数据库,因此请使用映像上的外键约束来保持参照完整性。数据库或EF将阻止您删除仍在引用的图像。您可以捕获此异常并继续处理请求而不删除图像。
我发现了一篇发布Inferring Foreign Key Constraints in EF的博客,可能会对其进行设置。
答案 1 :(得分:0)
根据您的喜好结合想法:
在DB中创建触发器
那将删除alt img。 每当你想删除主记录行时,其他记录也将被删除。
另一个(基于nhibernate)
确保实体框架中的替代图像可能会级联命令。在这种情况下,如果删除一个图像,另一个图像也将被删除。 Here is one example from google how to do this
最笨拙但最简单的是:
删除图像时删除两个记录。