我有一个从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'
答案 0 :(得分:3)
流利的NHibernate并没有试图坚持所有公众成员。这是NHibernate代理机制,需要所有成员是虚拟的;它们可能会也可能不会用于持久性,但无论如何都需要它们。
您需要为实体禁用延迟加载和代理,或者(最好!)在WS中而不是直接在实体中公开DTO。