【问题标题】:How to Check column value null or not before Map in property in Nhibernate如何在 Nhibernate 的属性中的 Map 之前检查列值是否为空
【发布时间】:2016-01-14 09:40:55
【问题描述】:

我有一个名为 MyValue 的属性。需要将列 value("Total") 映射到该属性。在映射之前需要检查列值是否为空。如果为 null,则将另一列 value("Count") 映射到该列。

我该如何进行,

这是为总价值完成的

 Map(x => x.MyValue)
       .Column("Total")
       .CustomType("Decimal")
       .Access.Property()
       .Generated.Never()
       .CustomSqlType("decimal")
       .Precision(9).Scale(2);

【问题讨论】:

  • 我认为您的问题可能源于一个轻微的误解 - 您设置的映射不会在 NHibernate 每次需要读取或写入某些内容时执行。它们只执行一次(当您设置会话工厂时)。 Radim 的回答很好。

标签: c# asp.net nhibernate fluent-nhibernate nhibernate-mapping


【解决方案1】:

如果您正在谈论在 DB 中有两列并且希望在应用层上将它们作为一个列使用...您应该使用 FORMULA 映射它们。

 Map(x => x.MyValue)
       //.Column("Total")
       .Formula("ISNULL(Total, Count)")
       ...

注意:应始终将其视为只读 - 如果您需要写入两列,请将它们分别映射,并为 ISNULL 公式创建第三个只读映射...

查看文档:5.1.10. property

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2017-01-05
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多