C# 如果我使用BLL,我还应该访问DAL吗?

C# 如果我使用BLL,我还应该访问DAL吗?,c#,data-access-layer,n-tier-architecture,bll,C#,Data Access Layer,N Tier Architecture,Bll,我想创建具有存储库模式的n层体系结构。我想知道通过BLL层复制我所有的调用,然后通过BLL层访问数据调用是否有意义?或者我可以通过DAL直接访问一些内容,或者通过BLL访问一些内容吗?在我看来,仅仅为了它而复制是没有意义的 (尽管每种方法都有其优缺点,但从本质上讲,没有什么是错的或好的) 通常情况下,尽管数据层处理(简化)一些精确匹配表的“颗粒化”数据等 而您的业务层可以将这两者结合起来,并且更集中于“逻辑”和您的逻辑模型(然后是数据模型和数据) 如果您发现自己的业务层中有一个完全相同的DAL副

我想创建具有存储库模式的n层体系结构。我想知道通过BLL层复制我所有的调用,然后通过BLL层访问数据调用是否有意义?或者我可以通过DAL直接访问一些内容,或者通过BLL访问一些内容吗?

在我看来,仅仅为了它而复制是没有意义的 (尽管每种方法都有其优缺点,但从本质上讲,没有什么是错的或好的)

通常情况下,尽管数据层处理(简化)一些精确匹配表的“颗粒化”数据等

而您的业务层可以将这两者结合起来,并且更集中于“逻辑”和您的逻辑模型(然后是数据模型和数据)

如果您发现自己的业务层中有一个完全相同的DAL副本,那么您很可能遗漏了一点。有些东西可能需要重新组织、扔掉或简化

或者,例如,问自己以下问题-如果您想(例如)使用不同类型的存储(不同的事物组织或任何需要您更改数据/DAL运行方式的事情)替换DAL-您的BLL将是什么样子?相同的?您的业务层不应该“遵循数据”——它应该有自己的规则,更多的是关于您的域的逻辑,您正在做什么。而数据应该是关于数据的

因此,简言之,问题主要在于如何设计您的系统-如果您很好地利用了业务层(通常您应该这样做,除非它相对简单,或者您决定采用完全不同的体系结构),那么就使用它,如果没有,就不需要复制


希望这能有所帮助。

在我看来,仅仅为了它而复制是没有意义的。
(尽管每种方法都有其优缺点,但从本质上讲,没有什么是错的或好的)

通常情况下,尽管数据层处理(简化)一些精确匹配表的“颗粒化”数据等

而您的业务层可以将这两者结合起来,并且更集中于“逻辑”和您的逻辑模型(然后是数据模型和数据)

如果您发现自己的业务层中有一个完全相同的DAL副本,那么您很可能遗漏了一点。有些东西可能需要重新组织、扔掉或简化

或者,例如,问自己以下问题-如果您想(例如)使用不同类型的存储(不同的事物组织或任何需要您更改数据/DAL运行方式的事情)替换DAL-您的BLL将是什么样子?相同的?您的业务层不应该“遵循数据”——它应该有自己的规则,更多的是关于您的域的逻辑,您正在做什么。而数据应该是关于数据的

因此,简言之,问题主要在于如何设计您的系统-如果您很好地利用了业务层(通常您应该这样做,除非它相对简单,或者您决定采用完全不同的体系结构),那么就使用它,如果没有,就不需要复制


希望这能有所帮助。

我个人只通过我的bll访问我的dal,并将复制呼叫。您永远不知道何时可能需要添加一些业务逻辑,在bll中修改调用比在bll中添加新调用要容易得多。如何定义“仅数据调用”?为什么你觉得自己在BL中“重复通话”?你在编程什么技术(Winforms、Webforms、MVC…?)?我个人只通过bll访问我的dal,并将复制调用。您永远不知道何时可能需要添加一些业务逻辑,在bll中修改调用比在bll中添加新调用要容易得多。如何定义“仅数据调用”?为什么你觉得自己在BL中“重复通话”?你在用什么技术编程(Winforms、Webforms、MVC…?)?