如果我想创建一个3层ASP.Net应用程序(表示层,业务层,数据访问层),那么创建Connection对象的最佳位置在哪里?
到目前为止,我在Presentation Layer中使用了一个帮助器类,从每个页面上的web.config中的ConnectionString创建一个IDbCommand,并将其传递给DAL类/方法。
现在我不太确定,如果这个部分也不应该以某种方式包含在DAL中,因为它显然是数据访问的一部分。 DAL是一个单独编译的项目,因此我无法访问web.config并且无法访问连接字符串(对吗?)。
这里的最佳做法是什么?
答案 0 :(得分:4)
简短回答:
表示对数据库的依赖关系的Connection对象应该在数据访问层中创建(并且只知道 )。
答案很长:
当你说“3-Tier”时,你的意思是“等级”还是指“层”?前者表明每层之间存在硬边界,例如服务层。后者只是单个应用程序上下文中的逻辑分离。另外,定义DAL是以“单独编译的项目”的方式?它可以访问运行代码的任何应用程序上下文的配置文件。如果它是它自己的层,它将有某种服务或具有配置的东西。如果它只是一个图层,它可以访问应用程序的主配置。
理想情况下,与数据库绑定和/或依赖于数据库的任何内容都应仅存在于DAL中。应用程序域的其余部分不必担心数据库。
答案 1 :(得分:0)
我认为应该在服务层,即满足用例的服务层。知道工作单元的对象应该是创建连接,设置事务级别,完成用例以及清理所需内容的对象。
它不应该在表示层中,因为如果更改表示技术,则必须重做连接创建。