gpt4 book ai didi

nhibernate - Fluent NHibernate - 是否可以将属性映射到 Sql Server 中的持久计算列

转载 作者:行者123 更新时间:2023-12-04 01:14:16 25 4
gpt4 key购买 nike

我想使用 Fluent NHibernate 将只读属性映射到 Sql Server 中的计算列。该属性是另一个的子串。我这样做是为了使子字符串可索引并具有更好的搜索性能。但是当我在映射中使用 Formula 函数时,该属性不会映射到数据库中的计算列,而是在使用查询时计算。

Class Person{
public virtual string name {get; set;}
public virtual string subName {get; set;}
}

Class PersonMap : ClassMap<Person>{
Map(p => p.name);
Map(p => p.subName).Generated.Always().Formula("substring(name, 0, 5)");
}

最佳答案

您需要在您的代码中复制该功能 - 如果您更改名称属性,默认情况下 NHibernate 不会向数据库发送新查询来评估生成的属性。

你需要做类似的事情:

 public virtual string subName { get { return name.Substring(0, 5); } set { } }

请注意,您将需要空的 setter,否则 NHibernate 会报错

编辑:我看到您想为数据库中的列编制索引,因此您需要为数据库中的该表创建一个计算列。这本身与 NHibernate 无关,您可以在映射中完全忽略该列(只要您在代码中复制它),或者删除 .Formula(..) 部分(因为它是在计算列中指定的)已经)

关于nhibernate - Fluent NHibernate - 是否可以将属性映射到 Sql Server 中的持久计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828100/

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