Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF对象中的相等_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 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 据我所知,当查询对象时,对象更改跟踪功能(如果启用)将返回

假设EF中的两个实体指针总是相同的(假设它们指向同一行和数据库上下文),安全吗?无论我如何遍历连接表等来访问它们

还是有例外?据我所知,它们总是引用同一个对象,因此总是相等的

Person p1 = dbcontext.Persons.FirstOrDefault();
Person p2 = dbcontext.Persons.FirstOrdefault();
Debug.Write(p1.Equals(p2)); // true

据我所知,当查询对象时,对象更改跟踪功能(如果启用)将返回已查询的相同对象。默认情况下,它处于启用状态。如果刷新对象,则情况可能并非如此(表示上下文上的刷新方法)


我不保证这种行为100%…

如何确保在代码执行所需的时间内,您是唯一访问数据源的人?如果它们来自同一
dbcontext
您可能是真的,但我不是100%肯定的。如果它们来自不同的
dbcontext
,则绝对不是。@Serv好的,基于源代码未被修改的假设。@Maarten是的,我更新了我的问题,因为我只是在谈论相同的上下文。谢谢您的详细说明。我将使用一个扩展,通过键来比较相等性,这是一个很好的方法;在这种情况下,请确保始终比较相同的对象:-)