我想在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);
}
我担心的是当我调用SaveBarEntity(barEntity)时fooEntity不再存在;
问题: 是否有可能以某种方式强制EntityFramework,以便如果在保存时Db中不存在fooEntity,它应该抛出异常?
(对我来说,这听起来像是将fooEntity作为'工作单元'的一部分。但它是如何在实体框架中实现的?)
答案 0 :(得分:1)
我认为,由于数据库中Foo
和Bar
之间没有关系,唯一的方法是为Bar
表创建插入和更新数据库触发器以检查是否相关{ {1}}实体存在。
为了将相关的Foo
实体Id传递给数据库,您需要修改EF的保存行为以将ID传递给DB的上下文。
这真的需要很多努力;我认为在您的模型中创建Foo
和Foo
之间的关系会更好(这似乎是一种正确的方式,因为看起来Foo和Bar之间存在关系)。
答案 1 :(得分: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
}