【发布时间】:2012-03-07 13:44:13
【问题描述】:
我有一个包含两个实体的实体框架对象模型:
Alert (1-*) ----- (1) Check
Check 表对UniqueProperty 列具有唯一约束。
检查通常是我数据库中预先存在的实体,任何新警报都应添加到现有检查中。
我在代码的某处创建了一个简单的对象图:
var alert = new Alert();
alert.Check = new Check { UniqueProperty = someValue };
稍后我想保留我的对象图:
using (var context = new MyContext())
{
context.Alerts.AddObject(alert);
// Replace temp check with actual database check if available.
var checkFromDb = context.Checks.SingleOrDefault(
c => c.UniqueProperty = alert.Check.UniqueProperty);
if (checkFromDb != null)
{
alert.Check = checkFromDb;
}
context.SaveChanges();
}
所以,当数据库中有相应的检查时,使用那个,否则什么都不做(它会被简单地添加)。
上面的代码导致UniqueProperty 约束的唯一约束冲突。原因是 EF 会记住第一次检查,即使我稍后将其替换为数据库中的检查。
我怎样才能摆脱第一次检查?
【问题讨论】:
标签: c# .net entity-framework entity-framework-4