例如,如果您有一个名为 Person(ID、Name 等)的数据库表,数据访问层应将什么样的对象返回给业务层?
我在想这样的事情:
//data access tier
public class DataAccess{
public interface IPerson{
int ID{ get; set; }
string Name{ get; set; }
}
internal class Person : IPerson{
private int id;
private string name;
public int ID{ get{return id; } set{ id=value; } }
public int Name{ get{retutn name; } set{ name=value; }
}
public static IPerson GetPerson(int personId)
{
//get person record from db, populate Person object
return person;
}
}
//business tier
public class Person : IPerson{
private int id;
private string name;
public int ID{ get{return id;} set{id=value;} }
public string Name{ get{return name;} set{name=value;} }
public void Populate(int personId){
IPerson temp = DataAccess.GetPerson(personId);
this.ID = temp.ID;
this.Name = temp.Name;
}
}
但这一切似乎有点麻烦?对于这个问题有更优雅的解决方案吗?我应该从数据访问层返回一个 DataRow 到业务层吗?
您无需在数据访问层 (DAL) 中重复类定义。
您可以在单独的程序集中将业务实体创建为“哑”容器,例如你的 Person 类可以是:-
public class Person
{
int ID { get; set: }
string Name { get; set: }
}
然后,您可以为 DAL 提供对业务实体层的引用。您的控制器对象,无论它们是在单独的业务逻辑层中,还是在 UI 层中,都可以只调用 DAL,它可以创建业务实体,从数据库填充它并将其返回到您的控制器。
本文 http://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=476Imar Spaanjaars 对这种模式做了很好的解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)