如果您从数据访问层返回到业务层的n层系统哪些对象 [英] What objects should you return from the data access layer to the business layer an n-tier system
问题描述
如果你有,例如,一个数据库表名为Person(ID,姓名等),有什么样的对象应数据访问层返回到业务层? 我想是这样的:
If you have, for example, a database table called Person (ID,Name etc) what kind of object should the data access tier return to the business tier? I'm thinking something like this:
//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到业务层呢?
But this all seems a little cumbersome? Is there a more elegant solution to this problem? Should I return a DataRow from the data access layer to the business layer instead?
推荐答案
您不需要在数据访问层(DAL),重复类定义
You don't need to repeat the class definition in your data access layer (DAL).
您可以创建你的业务实体作为一个单独的程序集'哑巴'的容器,如您的Person类可以只是: -
You can create your business entities as 'dumb' containers in a separate assembly, e.g. your Person class can just be:-
public class Person
{
int ID { get; set: }
string Name { get; set: }
}
然后,你可以给你的DAL引用业务实体层。你的控制器对象,无论他们是在一个单独的业务逻辑层,或者你的UI层内,就可以只调用DAL,它可以创造一个商业实体,从数据库中填充它,并将其返回到控制器。
Then, you can give your DAL a reference to the business entities layer. Your controller objects, whether they are in a separate business logic layer, or within your UI layer, can then just call the DAL, which can create a business entity, populate it from the database and return it to your controller.
本文内蒙古自治区Spaanjaars 中有这种模式的一个很好的解释。
This article by Imar Spaanjaars has a nice explanation of this pattern.
这篇关于如果您从数据访问层返回到业务层的n层系统哪些对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!