首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NHibernate,审计和计算列值

NHibernate,审计和计算列值
EN

Stack Overflow用户
提问于 2019-04-24 00:18:48
回答 2查看 0关注 0票数 0

当通过NHibernate更新/插入实体而不扩展具有特殊属性的域类时,如何设置一些特殊的列值?

例如,每个表都包含审计列,如CreatedBy,CreatedDate,UpdatedBy,UpdatedDate。但我不想将这些属性添加到域类中。我想保持域modedl Percistence Ignorance因子尽可能高。

EN

回答 2

Stack Overflow用户

发布于 2019-04-24 08:50:35

经过几个小时的黑客攻击NHibernate,我找到了如何保持域层类与基础架构层隔离的妥协解决方案。这里只有一个“受害者”是下面列表中的第1点:

1)我已经为域中的所有可持久实体引入了基类DomainObject,只有一个私有字段:

代码语言:javascript
复制
private IDictionary _infrastructureProperties = new Dictionary<object, object>();

2)在类映射中添加了以下部分:

代码语言:javascript
复制
<dynamic-component name='_infrastructureProperties' access='field'>
  <property name='CreateBy' column='CreatedBy' />
  <property name='CreateDate' column='CreatedDate' />
</dynamic-component>

3)实现了一个设置这些属性值的拦截器。

4)(可选)此外,我们可以实现一个类型设置,配置每个类在应用程序中播放的“角色”,然后在Interceptor中处理角色特定属性。例如,此配置可以声明Product是TenantScopeObject,并且拦截器将在系统中记录当前租户标识值中名为TenantID的属性。

票数 0
EN

Stack Overflow用户

发布于 2019-04-24 09:48:16

它与“不添加这些属性”不同,但是上次我看到它时,工程师通过实现具体的NHibernate类并从实现您不喜欢的属性的公共抽象基类(例如MyAuditable)派生它们来解决它。这样你只需要解决一次问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档