C# EF对象中的相等
假设EF中的两个实体指针总是相同的(假设它们指向同一行和数据库上下文),安全吗?无论我如何遍历连接表等来访问它们 还是有例外?据我所知,它们总是引用同一个对象,因此总是相等的C# EF对象中的相等,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,假设EF中的两个实体指针总是相同的(假设它们指向同一行和数据库上下文),安全吗?无论我如何遍历连接表等来访问它们 还是有例外?据我所知,它们总是引用同一个对象,因此总是相等的 Person p1 = dbcontext.Persons.FirstOrDefault(); Person p2 = dbcontext.Persons.FirstOrdefault(); Debug.Write(p1.Equals(p2)); // true 据我所知,当查询对象时,对象更改跟踪功能(如果启用)将返回
Person p1 = dbcontext.Persons.FirstOrDefault();
Person p2 = dbcontext.Persons.FirstOrdefault();
Debug.Write(p1.Equals(p2)); // true
据我所知,当查询对象时,对象更改跟踪功能(如果启用)将返回已查询的相同对象。默认情况下,它处于启用状态。如果刷新对象,则情况可能并非如此(表示上下文上的刷新方法)
我不保证这种行为100%…如何确保在代码执行所需的时间内,您是唯一访问数据源的人?如果它们来自同一
dbcontext
您可能是真的,但我不是100%肯定的。如果它们来自不同的dbcontext
,则绝对不是。@Serv好的,基于源代码未被修改的假设。@Maarten是的,我更新了我的问题,因为我只是在谈论相同的上下文。谢谢您的详细说明。我将使用一个扩展,通过键来比较相等性,这是一个很好的方法;在这种情况下,请确保始终比较相同的对象:-)