使用 OR 映射器时隐藏 属性 个设置器

Hiding property setters while using an OR Mapper

我正在使用 Fluent-NHibernate 来管理所有数据持久层,我总体上非常高兴(并感谢 NHibernate 社区)。我计划继续使用 OR 映射器。我围绕正在映射的 POCO 开发了一个 API。缺点是所有属性都可以由 UI 开发人员获取和设置;当我真正想要的是对非中间层开发隐藏属性并且只显示提供的 API 方法来执行操作时。

有人对此有好的策略吗?

过于简单的例子:

member.FName = "Julian";    /// Don't do this because it avoids the my checking
member.LName = "King";


member.setName("Julian", "King");   /// Yes - this will throw an error if this person already exist 
private string _fName;
public string FName
{
   get { return _fName;}
}

private string _lName;
public string LName
{
  get { return _lName;}
}

public void SetName(string fName, string lName){

   // check for nulls here and or validate pre-conditions

  _fName = fName;
  _ lName = lName;

// check for post conditions here

}

或者更好的是使用值对象(参见 DDD 中值对象的定义)

public void SetName(Name name){

      _fName = name.FirstName;
      _ lName = name.LastName;

    }