阻止在Fluent NHibernate中映射类的所有公共成员

时间:2010-04-29 17:10:03

标签: c# .net nhibernate fluent-nhibernate

我有一个从WSDL生成的类,它有一堆公共属性和一个公共事件。我正在用自己的类扩展这个类,并为它添加一些属性。我自己的所有属性都声明为virtual,但基类属性不是虚拟的。

我正在使用Fluent NHibernate的ClassMap来映射扩展类中的属性。我如何阻止(流畅)NHibernate试图坚持所有基类的公共成员?

目前,我在创建ISessionFactory时遇到以下异常:

  

NHibernate.InvalidProxyTypeException:以下类型不能用作代理:

     

类型:方法get _ <BaseClassProperty&gt;应该是'public / protected virtual'或'protected internal virtual'

     

类型:方法集_ <BaseClassProperty&gt;应该是'public / protected virtual'或'protected internal virtual'

     

...

     

类型:方法添加_ <BaseClassEvent&gt;应该是'public / protected virtual'或'protected internal virtual'

     

类型:方法删除_ <BaseClassEvent&gt;应该是'public / protected virtual'或'protected internal virtual'

1 个答案:

答案 0 :(得分:3)

流利的NHibernate并没有试图坚持所有公众成员。这是NHibernate代理机制,需要所有成员是虚拟的;它们可能会也可能不会用于持久性,但无论如何都需要它们。

您需要为实体禁用延迟加载和代理,或者(最好!)在WS中而不是直接在实体中公开DTO。