我想使用以下代码检查EF 4.0中的表是否有任何更改:
var a = context.Users.GetHashCode();
AddNewUser();
context.SaveChanges();
var b = context.Users.GetHashCode();
a == b,我不知道为什么?
任何帮助都将不胜感激!
答案 0 :(得分:4)
GetHashCode
绝对different usage。您无法检测ObjectSet
中的更改,因为它是相关数据库表的入口点。您可以检测在ObjectContext
中准备的更改,但仅在您接受更改之前(默认SaveChanges
也接受更改)。要从ObjectContext
获取更改,请使用:
context.ObjectStateManager.GetObjectStateEntries(...)
答案 1 :(得分:0)
GetHashCode可能没有考虑ObjectSet项目的真实内容,你不能简单地检查你的情况下的计数或检查更改的属性吗?