gpt4 book ai didi

NHibernate 事件监听器

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

我正在尝试使用 FluentNHibernate 将 IPostLoadEventListener 的实现添加到我的 NHibernate 配置中。我可以这样做,如图所示:

how to add event listener via fluent nhibernate?

但是,创建一个新数组来替换旧数组会完全丢弃任何现有的事件监听器。我可以这样解决:

return Fluently.Configure()
.Database(config)
.Mappings(m => m.AutoMappings.Add(mappings))
.ExposeConfiguration(cfg =>
{
cfg.EventListeners.PostLoadEventListeners =
new IPostLoadEventListener[] {
new UtcDateEventListener(),
new DefaultPostLoadEventListener() // <<< this one is the default
};
cfg.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] {
new UtcDateEventListener(),
new DefaultSaveOrUpdateEventListener() // <<< this one is the default
};
})
.BuildConfiguration()
.BuildSessionFactory();

但是我只能通过逐步执行代码来确定我要覆盖的内容来了解​​默认事件监听器。我想添加我的事件监听器而不覆盖任何现有的事件监听器,但是像我上面显示的那样这样做对我来说似乎很臭。现有的事件监听器公开为数组(而不是集合或列表,后者更有意义)。有没有更干净的方法来处理这个问题?

最佳答案

你的意思是这样的:

using System.Linq;

...

var list = cfg.EventListeners.PostLoadEventListeners.ToList();
list.Add(new MyPostLoadEventListener());
cfg.EventListeners.PostLoadEventListeners = list.ToArray();

那应该工作:)

关于NHibernate 事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926993/

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