gpt4 book ai didi

fluent-nhibernate - NHibernate 要求事件是虚拟的?

转载 作者:行者123 更新时间:2023-12-04 07:08:27 25 4
gpt4 key购买 nike

我正在尝试使用 NHibernate 映射实体层次结构,几乎所有实体层次结构都有事件。但是,在尝试构建 session 工厂时,我收到类似于以下内容的错误消息:

Core.Domain.Entities.Delivery: method remove_Scheduled should be virtual



发货是我的域模型中的一个实体,带有一个名为 的事件预定 .由于无法将事件声明为虚拟事件,因此我不知道如何在此处进行。为什么 NHibernate 需要虚拟事件?

最佳答案

如果你使用延迟加载,公共(public)成员必须声明为虚拟的,因为 NHibernate 会在运行时为你的实体创建代理对象。所以不要使用延迟加载或者只是将事件声明为虚拟的——这并不常见,但它是可能的。

NHibernate 为所有延迟加载的实体创建代理类,并在实体被引用但尚未加载的地方使用它们。访问此代理会触发从数据库加载真实实体。这种方法需要在运行时从您的实体类继承并覆盖公共(public)成员,因此该成员是虚拟的。

还有另一种解决方案。您可以添加proxy="ISomeInterface"到类声明。然后你不需要虚拟成员,而代理只实现给定的接口(interface)。

关于fluent-nhibernate - NHibernate 要求事件是虚拟的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/751050/

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