我想实现一种AddOrUpdate方法功能。因此,我为每个实体添加或更新编写以下代码:
var someEntity =
context.Set<SomeEntity>.FirstOrDefault(
x => x.EntityId == 2) ?? new SomeEntity();
context.Set<SomeEntity>().Attach(someEntity);
someEntity.Foo="foo";
someEntity.Bar="Bar";
//...
context.SaveChanges();
在使用该代码时,当满足conditiob的实体存在时,它将被复制。你能告诉我我错过了什么。根据我的理解,如果我们附加到已经附加的实体,它的状态就不会改变。
答案 0 :(得分:1)
您应该指定EntityState:
var someEntity =
context.Set<SomeEntity>.FirstOrDefault(
x => x.EntityId == 2) ?? new ProcedureBillingOptionRecord();
context.Entry(someEntity).State = someEntity.EntityId == 0 ?
EntityState.Added :
EntityState.Modified;
someEntity.Foo="foo";
someEntity.Bar="Bar";
//...
context.SaveChanges();