NHibernate的以流畅映射和Syscache2第二级缓存
-
19-08-2019 - |
题
我有我想要缓存一个非常简单的国家实体。这完美的作品,但我想退换或进行只读,以防止开发商更改它的状态缓存实例的克隆版本。
我将如何实现这一目标?余因子评分,所述流利只读()方法将执行这一点,但它不是这种情况。
样品流利映射:
Id(x => x.Id);
Map(x => x.Name).WithLengthOf(50).Not.Nullable().Unique();
Map(x => x.IsoCode).WithLengthOf(10).Not.Nullable().Unique();
HasMany(x => x.States).Cascade.None().LazyLoad();
Cache.AsReadOnly();
我的单元测试清楚地表明,实体缓存和同一个实体返回后续获取,但我想,一旦它从持久存储加载的对象是不可改变的。
谢谢!
解决方案
如果你希望你的类的实例是不可改变的(在这个意义上,这是不可能的修改对象实例),那么你就需要编写根据你的类 - 它没有任何关系NHib或流利NHib。作为示例,映射到NHib私有字段或私人财产setter和只露出属性获取公开。
使用NHib,可以指定在类的映射“可变=假”(不知道如何与FNH,对不起做到这一点)。这不会使运行时的目标不变,但它并通知NHib不检查插入,更新和删除对这些实体。
不隶属于 StackOverflow