【问题标题】:What section should I place my SqlDataReader code in?我应该将我的 SqlDataReader 代码放在哪个部分?
【发布时间】:2010-10-24 01:35:53
【问题描述】:

我对 c# 还很陌生,正在尝试编写一个 n 层 Web 应用程序。为了确保我将逻辑和代码放在正确的位置,我只是想问一下我的代码应该放在哪里。

我有三个主要部分:

  1. DataAccess 代码 - 在我的 App_Code 文件夹中名为“BusinessLogic”的文件夹中。

  2. 业务逻辑代码 - 在我的 App_Code 文件夹中名为“DataAccess”的文件夹中。

  3. 表示层 - 所有 UI 的

例如,如果我需要编写一个 SqlDataReader 来从我的数据库中检索记录,我将在哪里实际编写代码?在 BLL 还是 DAL 中?

IE 我从表示层调用 BLL 代码。

ContentBLL content = new ContentBLL();
//some code to call the BLL layer...

这就是我开始感到困惑的地方。在我调用的业务层逻辑层中,我是在此处编写 SqlDataReader 代码还是再创建一个步骤并在数据访问级别编写 SQlDataReader 代码。

IE 我应该在 BLL 中添加一个名为 DAL 的方法吗? E.G

public static ContentBLL GetPageContent(intID)
{
return ContentDAL.GetItem(ID)
}

然后在我的 DAL 中我有一个方法来执行实际的 SqlDataReader E.G

public static ContentBLL GetItem(int id)
{
//return the SqlDataReader code...
}

我一直在尝试从 asp.net 网站上的教程中学习,但是对于教程中的 DAL,他们使用数据集代替。 任何帮助将不胜感激。

【问题讨论】:

    标签: business-logic data-access-layer


    【解决方案1】:

    我的典型方法是我开玩笑地称之为 2.5 层方法。

    在这个方法中,我使用如下方法:

                    Presentation Layer
    
                    Businesss Object Layer / Data Serialization
    
                    Database Service Layer
    

    业务层中的每个业务对象都有一个接受 IDataReader 的构造函数。然后读取此读取器以填充对象。

    数据库层封装了所有数据库访问请求并返回阅读器。

    虽然这不像某些人想要的那样纯粹,但替代方法是制作哑容器类来编组层之间的数据,我更喜欢只使用 IDataReader。

    此外,通过使用 IDataReader 而不是 SqlDataReader,我仍然与我的 DAL 松散耦合,并且可以实现任何形式的持久性,而不仅仅是 SQLServer。

    【讨论】:

    • 您好 FlySwat,感谢您的及时回复。我喜欢你的方法的声音。你能举一个简单的例子给我演示吗?
    【解决方案2】:

    这听起来像是过度设计的经典案例。

    我不认为在学习阶段需要进行一些过度设计,但我认为如果在任何时候它会产生更多的混乱,你需要退后一步,重新考虑你的方法。

    尝试更多地了解 ASP.NET,不要对语义过于紧张。如果您保持开放的心态并允许重构您的代码,您可能能够自己给出问题的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多