2

我将 EntitySpaces 用于所有与数据库相关的编码。作为一个单独的开发人员,我没有时间坐下来为我编写的每个应用程序编写 SQL,因此使用 ES 之类的生成器可以让我脚踏实地,为我节省几天甚至几周的时间。

我通常为我的应用程序使用的每个表编写一系列帮助程序类。我遇到的问题是,我真的不知道处理任何 SQL 超时或失败连接的最佳方法,除了在每个处理返回数据的方法周围粘贴一个 Try-catch。

在 EntitySpaces 中,只有在我运行任何类型的 CRUD 命令时才会构建和执行 SQL 连接。

例如:

    public TblUserCollection GetCollection()
    {

        TblUserCollection collection = new TblUserCollection();
        collection.Query.Where(collection.Query.CompanyId == CompanyId);
        collection.Query.OrderBy(collection.Query.FullName, esOrderByDirection.Ascending);
        collection.Query.Load();

        return collection;

    }

当我的助手类被告知将某个公司的用户列表分配给 ComboBox 时,将调用此方法。然后该方法调用它,我将数据分配给列表。我有大约 30 个这样的点,在特定于表的帮助器类中都称为 GetCollection()。

除了将方法编写为:

    public TblUserCollection GetCollection()
    {

        try
        {

            TblUserCollection collection = new TblUserCollection();
            collection.Query.Where(collection.Query.CompanyId == CompanyId);
            collection.Query.OrderBy(collection.Query.FullName, esOrderByDirection.Ascending);
            collection.Query.Load();

            return collection;
        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            //
        }

    }

我还可以做些什么?

4

3 回答 3

1

定义一个基类来处理您的 SQL 错误处理并让您的所有类都执行。TblUserCollection 实现该基类。因此,当您的子类抛出 sql 异常时,您可以让基类通过优雅的退出为您处理它们

您是否尝试过 Subsonic(免费版)和 LLBLGen(商业版)。两者都会为您生成 DAL 和一些 Web 组件。您对 Entityspaces 还满意吗?您的回答将对我自己的项目有所帮助。

于 2009-04-12T18:43:20.600 回答
0

这并不能真正回答您的问题,但您可以尝试学习 LINQ。它可以使这个代码:

public TblUserCollection GetCollection()
{

    TblUserCollection collection = new TblUserCollection();
    collection.Query.Where(collection.Query.CompanyId == CompanyId);
    collection.Query.OrderBy(collection.Query.FullName, esOrderByDirection.Ascending);
    collection.Query.Load();

    return collection;

}

在我的脑海中更具可读性。

于 2009-04-12T18:27:57.690 回答
0

传统的方法是让异常从您的 GetCollection 方法传播。您通常不想返回可能不完整的集合。

然后也许在您的表示层的顶层,您可以捕获异常并例如为用户提供重试的机会。

于 2009-04-12T18:44:07.807 回答