我有一些类具有该对象唯一的属性,例如对于User类,属性Username永远不应该重复。
NHibernate似乎不支持通过唯一键加载对象,然后以与Load()或Get()相同的方式缓存。我说的时候我是否正确?
如果我那么我将只需要通过LoadByUniqueIndex(lambda属性,对象键)的扩展方法来自己的角色。
答案 0 :(得分:1)
是的,你是对的,NH不会直接从缓存获取实体,除了id之外的任何东西。请注意,除id之外的所有内容都可能发生更改,需要在数据库中查找。
缓存时要小心。 “过早的缓存是所有邪恶的根源”或者其他什么。说真的,如果您不确定是否会出现明显的性能问题,请不要编写自己的缓存。
如果你认为只要应用程序运行就有一个静态缓存,我可以告诉你,你最好完全避免它。它不会在合理的努力下正常工作。