【发布时间】:2012-10-27 06:09:37
【问题描述】:
看完this,我还有一个问题:
我使用此代码查询数据库:
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(业务实体)中定义。
【问题讨论】:
-
在 BLL 中返回您需要的任何内容。你的 DAL 知道
Person吗? -
@TimSchmelter 嗨,蒂姆,但是,我想知道将我的 dal 引用到 BE(实体)是否是一件坏事,因为 BLL 已经引用了它...
-
@TimSchmelter 是的,它引用了 BE。(实体)
-
就我个人而言,如果我看到
DataTable被使用at all 而没有一些非常 充分的理由(主要是:如果架构完全不可预测),那么我会说有些事情是非常错误的......Person一路!但是:这里没有单一的答案。只是意见。 -
这有点主观。这取决于您实际需要什么以及您的类库的公开程度。你是在多个项目中使用它还是仅仅在这个项目中使用它?填充 DataTable、返回它然后将其转换为
List<Person>既昂贵又多余。所以如果Person是一个已知的类(或者你的 DAL 只是在这个项目中使用)你应该返回它。
标签: c# .net design-patterns data-access-layer