我在一个webapi项目中使用ef。在函数A中,我更改了一个实体的属性A,函数B,我更改了属性B.当我发布到这些同时,我发现只有一个属性已被修改,我敢肯定的帖子全部成功,但我怎么能修改这些2.EF在同一时间更新一行
回答
你应该在这两种方法使用一个上下文。也不要使用db.Entry(member).State = EntityState.Modified;
,因为它会为所有属性生成更新语句。改为使用db.Entry(member).Property("PropertyName").IsModified = true;
。如果context.Configuration.AutoDetectChangesEnabled == true
,并且您从上下文获取数据进行修改,则不需要使用它们中的任何一个。
public void FunctionA(DbContext context, int openid)
{
var member = db.Members.Find(openid);
member.A=a;
db.Entry(member).Property("A").IsModified = true;
}
public void FunctionB(DbContext context, int openid)
{
var member = db.Members.Find(openid);
member.B=b;
db.Entry(member).Property("B").IsModified = true;
}
然后同时调用这个方法和SaveChanges
的一个方面,如:
using (NielsenPMContext db = new NielsenPMContext())
{
FunctionA(db, openid);
FunctionB(db, openid);
db.SaveChanges();
}
注:不要害怕使用Find
方法两次,因为实体框架将来自当地的环境得到它而不是数据库第一次。或者它会很高兴得到会员并将其发送到FunctionA
和FunctionB
。我相信,你有很好的理由用不同的方法改变A
和B
成员。
Ty,我测试'db.Entry(member).Property(“PropertyName”)。IsModified = true;' ,它适用于我,非常感谢你! – Nico
@RuruXiang,不客气 –
- 1. 两个在同一时间UI更新
- 2. 更新,并在同一时间
- 3. 更新同一个变量多时间
- 4. EF一对多更新
- 5. EF代码第一次预过滤器日期时间/更新
- 6. 在同一记录上同时更新
- 7. 如何在同一时间更新和同步数据库表?
- 8. 使用EF更新表格中的一行时出现错误
- 9. 如何在EF更新一些领域
- 10. 如何避免在同一时间更新同一记录时发生更新冲突
- 11. 更新一行在同一个表的另一行数据
- 12. 在同一文档中同时进行多个更新
- 13. 在同一时间
- 14. 在同一时间
- 15. 在同一时间
- 16. EF:包括导航属性和在同一时间
- 17. EF LINQ '凡' 有2场在同一时间
- 18. 基于时间更新不同的行?
- 19. mysql如何时间戳唯一一个在同一个表列的更新
- 20. 多个项目在同一队列在同一时间运行
- 21. Java的MongoDB的:在同一时间更新多个文件
- 22. SQL插入和更新在同一时间
- 23. 更新多个下拉菜单在同一时间
- 24. 在同一时间更新两个进度条
- 25. CakePHP在同一时间更新两个表
- 26. 选择在同一时间更新和获取显示
- 27. 更新路线和Redux的状态数据在同一时间
- 28. 如何更新和选择在同一时间
- 29. 如何删除,并在同一时间更新MySQL数据
- 30. mysql在同一时间选择和更新
你的功能A和功能B在哪里?你可以把这些呢? – Sampath
@Sampath下面的答案是我的意思,A和B是相同的,但改变实体的不同支柱。我已经解决了,泰也! – Nico