【问题标题】:Can NHibernate set non-public properties?NHibernate 可以设置非公共属性吗?
【发布时间】:2011-04-27 18:54:16
【问题描述】:

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

public class Item
{
    public int ItemID {get; set;}
    public string Name{get; 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 访问器的访问吗?如果是这样,我应该将其设置为什么?私有的、受保护的、内部的、受保护的内部?

【问题讨论】:

    标签: c# nhibernate private protected


    【解决方案1】:

    来自 NHibernate 教程:

    属性无需声明为公开 - NHibernate 可以持久化具有内部、受保护、受保护的属性 内部或私人可见性。

    只需将 ItemID 设置为私有

    【讨论】:

    • 嗯,好吧,这很愚蠢。但是 NHibernate 怎么能看到我的私有访问器呢?
    • 当属性为内部时,我收到此错误。以下类型不得用作代理:项目:方法 get_ItemID 应为“公共/受保护的虚拟”或“受保护的内部虚拟”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2021-03-02
    • 2012-04-30
    • 2015-04-18
    • 2015-08-25
    • 1970-01-01
    • 2016-11-26
    相关资源
    最近更新 更多