2010-12-16 43 views
2

我有一个用户类,我想更新。我的数据库中有一个用户表,其中有两列:FirstName和Lastname,还有一个名为DisplayName的计算列,它们将中间的空格连接起来。 NHibernate的映射显示名称是NHibernate更新导致选择一行的计算列

<property name="DisplayName" type="string" generated="always"/> 

当我更新的用户对象,并提交事务,NHibernate的运行额外的select语句只是在DisplayName属性,我冒昧地保持对象和同步数据库行。我不需要这个,因为这个对象之后就不在范围之内了。

有没有什么我可以告诉NHibernate,在这个时候不需要获取更新的DisplayName?

问候, F.

+0

不能回答这个问题,但为什么不把这个计算作为用户对象的一部分? (例如连接Firstname和Lastname属性的c#属性)。这样你就不必涉及数据访问层。 – UpTheCreek 2010-12-16 15:58:16

+0

这是在映射,以便您可以选择/搜索显示名称? – Phill 2010-12-16 16:01:22

+0

@UpTheCreek - 我打算说同样的事情,但后来我想他可能会试图反对它。我只做过“全名”类型的东西作为类中的一个属性,而不是作为映射的一部分。 – Phill 2010-12-16 16:02:48

回答

2

generated="always"意思正是:“这是由DB每次我修改此行时间产生的值;请刷新它为我”。

NH没有像“只有在特定列发生变化时才刷新”的概念。

我认为您应该在您的域模型中生成该值,而不是数据库。

+0

这是当时的决定。谢谢大家! – Michali 2010-12-17 12:43:25