NHibernate可以设置非公共属性吗?

Eri*_*tas 4 c# nhibernate private protected

是否可以设置NHibernate来加载/持久化类的非公共属性?例如,我可能有一个Item类,如下所示.

public class Item
{
    public int ItemID {get; set;}
    public string Name{get; set;}
}
Run Code Online (Sandbox Code Playgroud)

使用以下映射:

<class name="RCL.Item" table="Items">
    <id name="ItemID" type="Int32" column="ItemID">
        <generator class="native"/>
    </id>
    <property name="Author" />
</class>
Run Code Online (Sandbox Code Playgroud)

但是我真的不希望我的Item类的使用者能够更改ItemID字段.我可以限制对ItemID的set访问器的访问吗?如果是这样我应该将它设置为什么?私人,受保护,内部,受保护的内部?

gco*_*res 10

从NHibernate教程:

不需要将属性声明为公共 - NHibernate可以持久保存具有内部,受保护,受保护的内部或私有可见性的属性.

只需将ItemID设置为私有

  • 嗯,好吧,这很容易愚蠢.但NHibernate如何看待我的私人访问者? (2认同)
  • 用反射 (2认同)