首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有fluent映射和Syscache2二级缓存的NHibernate

具有fluent映射和Syscache2二级缓存的NHibernate
EN

Stack Overflow用户
提问于 2009-03-16 15:10:34
回答 1查看 2.4K关注 0票数 0

我有一个非常简单的国家实体,我想要缓存。这可以完美地工作,但我希望返回缓存实例的克隆版本,或者将其设为只读,以防止开发人员更改它的状态。

我将如何实现这一点?我认为Fluent Readonly()方法会强制执行此操作,但事实并非如此。

示例Fluent贴图:

代码语言:javascript
复制
        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();

我的单元测试清楚地表明实体被缓存,并且在后续的gets中返回相同的实体,但是我希望对象在从持久化存储加载后是不可变的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-16 21:30:55

如果你想让你的类的实例是不可变的(从这个意义上说,不可能修改对象实例),那么你需要根据来编写你的类--这与NHib或Fluent NHib无关。例如,将NHib映射到私有字段或私有属性设置器,并且只公开属性getter。

使用NHib可以在您的类映射上指定"mutable=false“(不确定如何使用FNH执行此操作,对不起)。这不会使对象在运行时不可变,但会通知NHib不检查对这些实体的插入、更新和删除。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/650836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档