C# 在实体框架中修改同一实体是否会将该实体同步保存到数据库中?抛出异常?
我正在调查我们系统中的一个bug,在查看代码时,我看到开发人员查询了两次相同的实体,并用不同的值保存了它 我简化了案例,例如:C# 在实体框架中修改同一实体是否会将该实体同步保存到数据库中?抛出异常?,c#,entity-framework,C#,Entity Framework,我正在调查我们系统中的一个bug,在查看代码时,我看到开发人员查询了两次相同的实体,并用不同的值保存了它 我简化了案例,例如: Person Data: id | name | age | HasLicence 1 | david | 27 | true using (DbContext dbContext = new DbContext()) { Person person1 = dbContext.Persons.FirstOrDefau
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();
}
这是否会将实体同步保存到数据库中?抛出异常?简单的答案是两个变量都引用同一个对象实例(代理) 因此,更新person1.HasLicense时,person2.HasLicense上的值将相同
a.HasLicence = true;
Assert.AreEqual(a.HasLicence , b.HasLicence );
b.HasLicence = false;
Assert.AreEqual(a.HasLicence , b.HasLicence );
_dataContext.Save(); // updates only one entity
如果更改了datacontext的某些设置,行为可能会有所不同
如果您想了解更多实体框架的工作原理,可以在github上访问它
谢谢最后一个值将被设置。不幸的是,我在链接上找不到任何有用的信息。什么datacontext设置会影响该行为?