[英]Does modifying the same entity in Entity Framework will save the entity to the database synchronously? throw exception?
我正在調查我們系統中的一個錯誤,在查看代碼時,我看到開發人員查詢了兩次相同的實體並使用不同的值保存它。
我簡化了案例,例如:
Person Data:
id | name | age | HasLicence
1 | david | 27 | true
using (DbContext dbContext = new DbContext())
{
Person person1 = dbContext.Persons.FirstOrDefault(p=>p.age == 27);
Person person2 = dbContext.Persons.FirstOrDefault(p=>p.name == "david");
person1.HasLicence = false;
person2.HasLicence = true;
.
.
// more logic..
.
.
dbContext.SaveChanges();
}
這是否會將實體同步保存到數據庫中? 拋出異常?
簡單的答案是兩個變量都引用相同的 object 實例(代理)。
因此,當您更新 person1.HasLicence 時,person2.HasLicence 上會出現相同的值。
a.HasLicence = true;
Assert.AreEqual(a.HasLicence , b.HasLicence );
b.HasLicence = false;
Assert.AreEqual(a.HasLicence , b.HasLicence );
_dataContext.Save(); // updates only one entity
如果您更改了數據上下文的設置,行為可能會有所不同。
如果您想了解更多實體框架的工作原理,您可以在 github 上訪問它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.