我发布了有关丢失集合中各种记录的记录ID的问题。 ID为0,当单步执行代码时,我会在记录元素上看到“Proxy ....”。
以下是我发现的......
如果我在运行相同查询的页面上有3个控件,则第一个控件将获得具有记录ID的整个记录集。另外2个将获得记录的缓存副本,其中一些记录ID为0.当检查记录集时,它将看到“Proxy ...”和GUID查找号码。展开它,除了ID字段外,记录在那里。该字段为0。
要清除它,我必须在调用查询之前在第二个控件中发出以下命令:
FluentSessionManager.GetSession().Evict(typeof(IList<Patients>));
然后,这只解决了第二个控件的问题,第三个控件仍然有问题。我必须在第3个控件中做同样的事情。
我可以用3种不同的方式来解决这个问题。寻找解决方案来关闭2级缓存(无法找到),找到2级缓存的修复程序(仍然无法找到),或者找到一种方法将第2个只读字段映射到ID字段(我还没有完全找到)研究了如何做到甚至知道它是否有效。
如果这是修复它的唯一方法,我可以设置第二个只读字段。
例如,将在3个不同的控件中调用以下查询。 “患者”的记录在第2和第3对照中会出现“代理...”问题。并且“儿童”可能会/可能不会出现同样的问题。
用于获取集合的查询示例:
public IList<Patients> GetAllPatients()
{
return FluentSessionManager.GetSession()
.CreateCriteria<Patients>()
.Add(Expression.Eq("IsDeleted", false))
.SetFetchMode("Children", Eager)
.List<Patients>();
}
对此的任何帮助将不胜感激。
感谢。