通过使用Entity Framework 6以及存储库模式,我正在尝试更新一行,其中现有行具有与之关联的新外键对象。例如,Person
记录已存在。 Person
获得新的Dog
。所以现在Person
类实例化了Dog
属性并填充了数据。
这是我的更新方法:
public async Task<TObject> UpdateAsync(TObject updated, int key)
{
if (updated == null)
return null;
var existing = await this._context.Set<TObject>().FindAsync(key);
if (existing != null)
{
this._context.Entry(existing).CurrentValues.SetValues(updated);
}
await this._context.SaveChangesAsync();
return existing;
}
我通过以下方式来称呼它:
personRecord.Dog = new Dog () { Name = "Max", Age = 7 };
await this.PersonRepository.UpdateAsync(personRecord, personRecord.Id)
但是没有新的Dog
记录插入到数据库中。我做错了什么?
答案 0 :(得分:0)
您检查了实体人和实体狗的状态吗?
在saveChange()到
之前,实体状态必须处于修改状态或创建状态执行插入
您可以使用
查看此状态 context.Entry(person).State