请教一个NHibernate的问题

我的问题是hql是否直接支持对象的计算属性, 即只在代码中存在的属性, 没有对应的数据库字段或formula.

public class Name
{
    private string _firstName;
    public string FirstName
    {
        get { return _firstName; }
        private set { _firstName = value; }
    }

    private string _lastName;
    public string LastName
    {
        get { return _lastName; }
        private set { _lastName = value; }
    }

    public string FullName
    {
        get { return _lastName + _firstName; }
    }
}

将该类作为一个Component映射, 比如在Person类中映射为
<component name="Name" class="Name">
  <property name="FirstName" column="first_name" />
  <property name="LastName" column="last_name" />
</component>

想在hql中使用FullName, 但是会报错, 提示FullName没有对应的映射
from Person as p where p.Name.FullName = "somename"

在这个简单的例子中, 可以将FullName映射为Formula, last_name + first_name, 但这样肯定不好, 因为计算逻辑在代码和数据库中重复了, 还有其他的一些缺点.

我的问题是hql是否直接支持对象的计算属性, 即只在代码中存在的属性, 没有对应的数据库字段或formula.

请各位高人指点一二.

posted @ 2007-09-15 13:12  andy.wu  阅读(405)  评论(1编辑  收藏  举报