7

我在 MyWebpage.aspx.cs 中有一个方法,就像这样:

public partial class MyWebpage : PageBase
{
    private readonly DataAccessLayer dataAccessLayer;

    protected string GetMyTitle(string myVar, string myId)
    {
        if (string.IsNullOrEmpty(myVar))
        {
            return string.Empty;
        }

        return dataAccessLayer.GetMyTitle(Convert.ToInt32(myId), myVar);
    }
}

在 DataAccessLayer 类中,我有一个与 DB 对话并执行 DAL 并返回标题的方法。

从 MyWebPage.aspx.cs 类访问 DAL 的最佳实践是什么(因为我是否需要每次都创建一个新的 DataAccessLayer() 对象?我应该在我的 PageBase 类中的哪里创建它,或者每次我在后面的代码中调用它时) ?

4

2 回答 2

9

首先是从您的代码后面或表示层访问 DAL 通常不是一个好习惯。因为在这种情况下,您需要将业务逻辑代码放在代码后面(表示层),这会导致关注点冲突、高耦合、重复和许多其他问题。因此,如果您正在寻找最佳实践,我建议您查看以下链接:

这些都是非常好的书:

还有关于调用 DAL 的静态函数。如您所知,静态函数容易受到多线程的影响,因此如果您使用 DAL 函数中共享的任何内容(有时就是这种情况,如共享连接、命令等),它会破坏您的代码,所以我认为最好避免在这一层使用静态函数。

于 2012-12-06T02:10:44.287 回答
0

我是存储库模式的粉丝。每个人都有自己的看法,但我喜欢一个 sql 表 => 一个存储库并共享名称的想法,就像 ORM 工具一样。

实体框架可以快速处理您的 DAL,您仍然可以实现 DAL 模式,如存储库。

这是一个代码生成器,它采用 sql 连接字符串并提供企业数据访问应用程序块的相当标准的实现。它不是很健壮,因为它是针对平淡无奇的 sql 模式设计的。如果您使用示例数据库,它将为您提供代码示例,您可以使用这些示例来设计您喜欢的数据访问层。

于 2012-12-06T01:53:57.417 回答