忽略NHibernate代理的公共/内部字段

Mic*_*lGG 18 nhibernate f# fluent-nhibernate

我有一些实体类型,我想懒惰加载.但是,它们有一些内部(汇编)字段,但不在该类之外使用.这些字段是编译器生成的(F#),我无法更改它们.示例例外是:

NHibernate.InvalidProxyTypeException:以下类型不能用作代理:Mappings.MTest:field id @ 47不应该是公共的也不是内部的

我理解为什么NHibernate会这样做,以及如果有字段,如果我访问它们会弄乱生成的代理的延迟加载属性.但是,既然我知道我不会使用这些字段,我能以某种方式覆盖NHibernate吗?

有什么方法可以说"忽略这个领域"吗?我正在使用Fluent NHibernate,如果这样可以更容易.

编辑:我还应该注意,我正在使用NHibernate 2.1.0 Alpha 2.

Edit2:这里的主要要点是我想保持LazyLoading,这意味着我必须使用代理生成.禁用LazyLoading工作(没有代理),但sorta失败了像NHibernate这样的好框架的目的.

Mic*_*lGG 17

我重新组装了NHibernate(比获取源代码和重建更容易)并删除了内部/公共字段上的错误代码.如果没有检查,LazyLoading似乎工作得很好.(虽然,我是NHibernate的新手,所以可能有一些我不知道的情况.)

编辑: 啊,有一个属性,"use_proxy_validator"将禁用所有验证检查.够好了.

Fluently.Configure()
    .ExposeConfiguration(fun cfg -> 
        cfg.Properties.Add("use_proxy_validator", "false"))...
Run Code Online (Sandbox Code Playgroud)


小智 5

只需将lazy属性设置为false,

 <class name="OrderLine" table="OrderLine" lazy="false" >
Run Code Online (Sandbox Code Playgroud)

你可以阅读更多内容:NHibernate必须虚拟一切吗?- http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/

Ofir,www.TikalK.com