gpt4 book ai didi

c# - 对于相同的数据库对象, Entity Framework 对象引用是否相等

转载 作者:太空狗 更新时间:2023-10-29 17:42:29 25 4
gpt4 key购买 nike

如果我从不同地方查询“逻辑上”(在数据库中)相同的对象, Entity Framework 是否返回相同的对象引用。

例如,我查询了名为 Joe Black 的客户(现在假设我知道数据库中只有一个 Joe Black。)Customer c = select ... blabla where ... Name == Joe Black...; 在代码的其他地方,我查询了 Customer c2 = select... where。 . ID==5 其中 5 是 Joe Black 的 ID。我知道在数据库中它们映射到同一个对象,但它们是否也在代码级别映射到同一个对象?那么c1等于c2吗?我有列表要合并并检查对象的逻辑相等性(我现在无法访问数据库),我想知道 Entity Framework 对象是否可以很好地使用它或者我应该编写自定义比较器类。

最佳答案

大多数 ORM,包括 Entity Framework 和 NHibernate,都使用 Identity Map Pattern以确保每个主键只有一个给定实体的实例。标识映射受上下文限制,因此两个不同的上下文将创建两个引用同一实体的对象。让实体实现 IEquatable 是一种很好的做法,包括覆盖相等运算符,以便“==”或“!=”起作用。这比人们想象的要复杂得多。看看here举个例子。

关于c# - 对于相同的数据库对象, Entity Framework 对象引用是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com