0

我想在 EntityFrameWork 中存在另一个实体时创建一个新实体。

例如,假设如果 Db 中存在 ID=999 的 fooEntity,我想创建 barEntity 对象:

var fooEntity =GetFooByID(999);

if (fooEntity != null)
{
  var barEntity = new Bar()
        {
            Sweetness = 8,
            Bitterness = 5,
            // goes on...
        }

 SaveBarEntity(barEntity); 
}

我担心的是什么是 fooEntity 在我调用 SaveBarEntity(barEntity); 时不再存在。

问题: 是否可以以某种方式强制 EntityFramework 以便如果 fooEntity 在保存时 Db 中不存在,它应该抛出异常?

(对我来说,这听起来像是让 fooEntity 成为“工作单元”的一部分。但它是如何在实体框架中实现的?)

4

2 回答 2

1

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

这确实需要付出很多努力;我认为最好在模型之间FooBar模型中创建关系(这似乎是一种正确的方式,因为 Foo 和 Bar 之间似乎存在关系)。

于 2013-01-11T07:50:32.867 回答
0

这是不必要的工作,但您可以对 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
}
于 2013-01-11T08:01:29.917 回答