gpt4 book ai didi

nhibernate - 忽略 NHibernate 代理的公共(public)/内部字段

转载 作者:行者123 更新时间:2023-12-03 00:00:45 25 4
gpt4 key购买 nike

我有一些想要延迟加载的实体类型。但是,它们公开了一些内部(程序集)字段,但不在该类之外使用。这些字段是编译器生成的 (F#),我无法更改它们。异常(exception)示例是:

NHibernate.InvalidProxyTypeException: The following types may not be used as proxies: Mappings.MTest: field id@47 should not be public nor internal

我理解 NHibernate 这样做的原因,以及如果我访问字段,会如何扰乱生成的代理的延迟加载属性。但是,因为我知道我不会使用这些字段,所以我可以以某种方式覆盖 NHibernate 吗?

有什么办法可以说“忽略这个字段”吗?我正在使用 Fluent NHibernate,如果这样更容易的话。

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

Edit2:这里的主要要点是我想保持 LazyLoading 启用状态,这意味着我必须使用代理生成。禁用 LazyLoading 是可行的(无代理),但有点违背了 NHibernate 这样的优秀框架的目的。

最佳答案

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

编辑:啊,有一个属性“use_proxy_validator”将禁用所有验证检查。足够好了。

Fluently.Configure()
.ExposeConfiguration(fun cfg ->
cfg.Properties.Add("use_proxy_validator", "false"))...

关于nhibernate - 忽略 NHibernate 代理的公共(public)/内部字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com