【发布时间】:2010-12-16 15:53:00
【问题描述】:
我有一个要更新的用户类。我的数据库中有一个 User 表,其中包含两列:FirstName 和 Lastname,还有一个名为 DisplayName 的计算列将两者连接起来,中间有一个空格。 DisplayName 的 NHibernate 映射是
<property name="DisplayName" type="string" generated="always"/>
当我更新用户对象并提交事务时,NHibernate 只在 DisplayName 属性上运行一个额外的选择语句,我假设保持对象和数据库行同步。我不需要那个,因为之后对象就会超出范围。
我可以做些什么来告诉 NHibernate 目前不需要获取更新后的 DisplayName 吗?
问候, F.
【问题讨论】:
-
无法回答这个问题,但为什么不直接将计算作为 User 对象的一部分呢? (例如,连接 Firstname 和 Lastname 属性的 c# 属性)。这样您就不必涉及数据访问层。
-
这是否在映射中,以便您可以选择/搜索显示名称?
-
@UpTheCreek - 我本来想说同样的话,但后来我想也许他正试图质疑它。我只将“全名”类型的东西作为类中的属性,从来没有作为映射的一部分。
-
嗨,我一直在考虑这个问题,但是由于数据库中已经发生了计算,我想我宁愿避免这样做两次。此外,如果我想返回一个用户列表,我宁愿取消每行连接 3 个字符串的开销。
-
为什么要在数据库中进行,如果您在代码中进行,那么您可以逐个用户更改格式。有些人喜欢姓氏,名字,而另一些人喜欢名字姓氏。将其格式化为在数据库中预先计算的属性可以提供灵活性。
标签: nhibernate nhibernate-mapping