微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – BLL和DAL之间的通信

解决方案设置

> DAL(类库)
> BLL(类库)
> Common(类库(一些常用功能 – 枚举,日志记录,异常……))
> Application1(Windows应用程序)
> Application2(Windows应用程序)
> WebApp(Web应用程序)
> ……

假设我有一个Customer实体,它是:

> sql Server中的一个
> DAL中的CustomerDataTable
> BLL中的客户类
>所有应用程序中的BLL.Customer类

BLL和DAL应使用哪种对象进行通信 – DataTable或List< Customer> (例如)?在第一种情况下,BLL逻辑应将Customer对象转换为DataTable并将其发送到DAL.在secod的情况下,DAL层应该知道Customer层,它位于BLL层.但原始DLL引用DAL而不是相反…

我是否应该将所有类放入单独的程序集中,这是由所有其他类引用的(Common,BusinessObjects,…)?在这种情况下,我可以在所有项目中使用Customer类.

我知道,当我知道只有一个BLL会使用我的DAL时,我是否应该费心去分离DAL和BLL.在这种情况下,我可以将它们合并为一个项目.

PS – 我正在阅读关于DataTables的内容,很多人说我们根本不应该使用它们.有什么更好的选择?也许现在是我学习一些ORM映射工具的时候了:)

解决方法

在我看来,你应该有另一个层(单独的DLL).就像“域名”一样,您会在哪里保留像Customer这样的所有实体.
然后简单地在此程序集的层次结构中包含所有更高级别(DAL,BLL,UI和其他).

示例体系结构可能如下所示:

(数据库)< - > DAL< - > BL< - > UI

并且在所有级别上,您都可以访问“域”图层.DAL应该返回List而不是DataTable.在某些阶段,您可能希望在DAL中使用某些omr(如NHibernate)的开发过程也可能返回List.

原文地址:https://www.jb51.cc/csharp/101009.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐