阅读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(商业实体)中定义。
答案 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只返回应用程序对象(业务对象或视图模型),所有与持久性访问相关的应该被隐藏。