如果依赖实体不再存在,是否可以强制EF取消提交?
本文关键字:EF 取消 提交 实体 依赖 不再 存在 是否 如果 | 更新日期: 2023-09-27 17:51:15
我想在EntityFrameWork中现有的另一个实体上创建一个新实体。
例如,假设我想创建barenentity对象如果ID=999的fooEntity存在于Db:
var fooEntity =GetFooByID(999);
if (fooEntity != null)
{
var barEntity = new Bar()
{
Sweetness = 8,
Bitterness = 5,
// goes on...
}
SaveBarEntity(barEntity);
}
我关心的是什么是fooEntity不再存在的时候,我调用SaveBarEntity(barenentity);
问题:是否有可能以某种方式强制EntityFramework,以便如果fooEntity在保存时不存在于Db中,它应该抛出异常?
(对我来说,这听起来像是使"工作单元"的fooEntity的一部分。但是如何在实体框架中实现呢?)
我认为,由于Foo
和Bar
在数据库中没有关系,唯一的方法是为Bar
表创建插入和更新数据库触发器,以检查相关的Foo
实体是否存在。为了将相关的Foo
实体Id传递给数据库,需要修改EF的Save行为,将Id传递给DB的上下文。
这确实需要很多努力;我认为你最好在你的模型中创建Foo
和Bar
之间的关系(这似乎是一种适当的方式,因为它似乎有Foo和Bar之间的关系)。
这是不必要的工作,但是您可以对Foo记录执行更新。
var fooEntity =GetFooByID(999);
if (fooEntity != null) {
var barEntity = new Bar() {
Sweetness = 8,
Bitterness = 5,
// goes on...
};
SaveBarEntity(barEntity);
SaveFooEntity(fooEntity); // If necessary, do something to make sure EF performs an update
}