NHibernate 可以设置非公共属性吗?
Posted
技术标签:
【中文标题】NHibernate 可以设置非公共属性吗?【英文标题】:Can NHibernate set non-public properties? 【发布时间】:2011-04-27 18:54:16 【问题描述】:是否可以设置 NHibernate 来加载/保留类的非公共属性?例如,我可能有一个 Item 类,如下所示。
public class Item
public int ItemID get; set;
public string Nameget; set;
使用以下映射:
<class name="RCL.Item" table="Items">
<id name="ItemID" type="Int32" column="ItemID">
<generator class="native"/>
</id>
<property name="Author" />
</class>
但是我真的不希望我的 Item 类的消费者能够更改 ItemID 字段。我可以限制对 ItemID 的 set 访问器的访问吗?如果是这样,我应该将其设置为什么?私有的、受保护的、内部的、受保护的内部?
【问题讨论】:
【参考方案1】:来自 NHibernate 教程:
属性无需声明为公开 - NHibernate 可以持久化具有内部、受保护、受保护的属性 内部或私人可见性。
只需将 ItemID 设置为私有
【讨论】:
嗯,好吧,这很愚蠢。但是 NHibernate 怎么能看到我的私有访问器呢? 当属性为内部时,我收到此错误。以下类型不得用作代理:项目:方法 get_ItemID 应为“公共/受保护的虚拟”或“受保护的内部虚拟”以上是关于NHibernate 可以设置非公共属性吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用流利的 nhibernate 设置 generate_statistics = true
使用 NHibernate 从头开始:新的大型应用程序的提示