FluentNHibernate 公式映射 C#

Posted

技术标签:

【中文标题】FluentNHibernate 公式映射 C#【英文标题】:FluentNHibernate Formula Mapping C# 【发布时间】:2015-09-09 11:15:54 【问题描述】:

有没有办法声明一个传递公式的映射,该公式仅适用于特定语句(在我的情况下为SELECT

问题是我有类似的东西

Map(x => x.Id).Formula("SUBSTRING(id, 0, 2)");

但是当我尝试为这个特定实体运行插入时,它会导致错误,因为它也使用Formula 作为插入语句。

【问题讨论】:

【参考方案1】:

我们必须将此类列设为只读

Map(x => x.Id)
    .Formula("SUBSTRING(id, 0, 2)")
    .ReadOnly();

或更像原版insert="false" udpate="false"

Map(x => x.Id)
    .Formula("SUBSTRING(id, 0, 2)")
    .Not.Update()
    .Not.Insert();

【讨论】:

我没有为我们工作,因为我们还必须能够将该列用于插入语句(这不是身份字段) 公式将永远可插入。它只是一个阅读专栏。我会建议...映射它两次。一次仅插入...作为列(“id”)...这将在实体创建期间插入。稍后您可以使用公式进行阅读。那应该行得通。但正如我所说“公式本身将永远不可插入

以上是关于FluentNHibernate 公式映射 C#的主要内容,如果未能解决你的问题,请参考以下文章

使用 FluentNhibernate 和 Autofac 的映射接口

FluentNHibernate - 如何在没有任何身份字段的情况下进行映射

FluentNHibernate 异常:复合用户类型上的“属性映射的列数错误”

使用FluentNHibernate引用的CustomType

如何使用 FluentNHibernate N:N 映射与附加属性的关系

Fluent nHibernate - 如何在联结表上映射非键列?