我的DAL应该返回Person还是Datatable?

时间:2012-11-07 07:59:57

标签: c# .net design-patterns data-access-layer

阅读this后,我仍然有一个问题:

我使用此代码查询db:

c#:

new BLL().GetPersonById(1)

BLL:

public Person GetPersonById(int id)
{
  return new DAL ().GetPersonById(1);
}

DAL:

public Person  GetPersonById(int id)
{
   // goto db and create instance of Person and fill its data...
}

然而,我做错了,

我的DAL应该返回DataTable 吗? (所以BLL会创建Person ....?)

DAL:

public DataTable  GetPersonById(int id)
{
   // goto db ...
}

谢谢。

编辑:

Person对象在 BE dll(商业实体)中定义。

2 个答案:

答案 0 :(得分:3)

  

“我的DAL应该返回DataTable吗?(所以BLL会创建Person ....?)”

完全没有。理想情况下,DAL应该处理数据库,并且应该将实体/应用程序对象返回给BAL。 DAL用作数据库到BLL的抽象。

我同意MikeSW的说法,“BLL不应该依赖于DAL,最多它定义了一些将在DAL中实现的接口。”

答案 1 :(得分:1)

您的DAL,确切地说是Repository,返回Person,它是BLL中定义的业务对象。

BLL不应该依赖于DAL,它最多定义了一些将在DAL中实现的接口。但是,应用程序要求DAL存储业务对象,因为它负责处理所有持久性。

是的,DAL取决于BLL。 DAL sohld只返回应用程序对象(业务对象或视图模型),所有与持久性访问相关的应该被隐藏。