我有一些类具有该对象独有的属性,例如对于 User 类,属性 Username 永远不应重复。
NHibernate 似乎不支持通过唯一键加载对象,然后以与 Load() 或 Get() 相同的方式缓存该对象。我这样说对吗?
如果我是,那么我将不得不通过可能沿着 LoadByUniqueIndex(lambda property, object key) 行的扩展方法来扮演我自己的角色。
我有一些类具有该对象独有的属性,例如对于 User 类,属性 Username 永远不应重复。
NHibernate 似乎不支持通过唯一键加载对象,然后以与 Load() 或 Get() 相同的方式缓存该对象。我这样说对吗?
如果我是,那么我将不得不通过可能沿着 LoadByUniqueIndex(lambda property, object key) 行的扩展方法来扮演我自己的角色。
是的,你是对的,除了 id 之外,NH 不会直接从缓存中获取实体。请注意,除了 id 之外的所有内容都可能发生变化,需要在数据库中查找。
缓存时要小心。“过早的缓存是万恶之源”之类的。说真的,如果您不确定是否会遇到明显的性能问题,请不要编写自己的缓存。
如果您考虑拥有一个与应用程序运行一样长的静态缓存,我可以告诉您,您最好完全避免它。如果付出合理的努力,它将无法正常工作。