使用 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;
}
我正在使用 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;
}