我如何在nhibernate中执行此操作?自动更改字段?

时间:2011-02-10 21:28:33

标签: c# nhibernate linq-to-sql fluent-nhibernate

我linq to sql我可以做一个局部视图并做这样的事情

public partial class User
    {

        partial void OnNameChanged()
        {
            UserName = StringFormatter.ToTitleCase(UserName.Trim());
        }

        partial void OnEmailChanged()
        {
            Email = Email.ToLower().Trim();
        }

    }

我可以在nhibernate中做这样的事情。如果可以的话。你可以做类似OnQuery或OnSave的东西吗?

1 个答案:

答案 0 :(得分:3)

使用NHibernate做到这一点的最好方法是直接使用属性访问器:

public class User
{
   ...
   private string userName;
   public virtual string UserName
   {
       get{return StringFormatter.ToTitleCase(userName.Trim());}
       set{userName = StringFormatter.ToTitleCase(value.Trim());}
   }
   private string email
   public virtual string Email
   {
       get{return email.Trim().ToLower();}
       set{email= value.Trim().ToLower();}
   }
   ...
}

由于NHibernate不生成DAO,而只是使用现有的域对象,因此您可以完全控制get / set逻辑。不需要部分(尽管你可以这样设置,如果你真的想要的话)。