如果依赖实体不再存在,是否可以强制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的一部分。但是如何在实体框架中实现呢?)

如果依赖实体不再存在,是否可以强制EF取消提交?

我认为,由于FooBar在数据库中没有关系,唯一的方法是为Bar表创建插入和更新数据库触发器,以检查相关的Foo实体是否存在。为了将相关的Foo实体Id传递给数据库,需要修改EF的Save行为,将Id传递给DB的上下文。

这确实需要很多努力;我认为你最好在你的模型中创建FooBar之间的关系(这似乎是一种适当的方式,因为它似乎有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
}