database - 在 NHibernate 事件监听器中处理复合主键
问题描述
我正在尝试从 NHibernate 事件侦听器中提取原始实体的主键属性名称和值,并且我希望它能够处理复合主键。
我遇到的问题是,在我的事件处理程序中,当处理复合主键时,Id
被触发的事件的属性似乎绑定到整个原始实体:
如何获取原始 ID 属性名称和相应的值?
解决方案
我会为组件使用以下代码:
if (@event.Persister.IdentifierType.IsComponentType)
{
var componentType = (IAbstractComponentType) @event.Persister.IdentifierType;
var values = componentType.GetPropertyValues(@event.Id);
var propertyNames = componentType.PropertyNames;
for (int i = 0; i < values.Length; i++)
{
Console.WriteLine($"PropertyName: {propertyNames[i]}, Value: {values[i]}");
}
}
推荐阅读
- kotlin - 无法在 Kotlin/Java 中使用 jooq DSL 执行 where 子句
- python-3.x - VSCode 终端使用了错误的 python 版本
- javascript - ReactJS:无法加载在“package.json”中声明的插件“testing-library”:找不到模块“./eslint-utils”
- python - 在 DBFS 中的 Databrisk 中从 python-pptx 保存 pptx
- maps - 与谷歌地图上的地标一样,如何确保您的 GMB 默认出现在地图上?
- php - 当 woocommerce_order_status_changed 钩子触发时,Woocommerce admin_notices 不起作用
- godot - 如何检测是否在godot中单击了自定义形状?
- statistics - 如何评价二次项的三向交互作用的显着性?
- wpf - CefSharp新版IContextMenuHandler
- elasticsearch - 在 ElasticSearch 中有效地部分更新数组字段