Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-对于超时和连接失败,什么是好的SQLException错误处理_C#_Sql_Exception_.net 2.0_Sqlexception - Fatal编程技术网

C#-对于超时和连接失败,什么是好的SQLException错误处理

C#-对于超时和连接失败,什么是好的SQLException错误处理,c#,sql,exception,.net-2.0,sqlexception,C#,Sql,Exception,.net 2.0,Sqlexception,我使用EntitySpace进行所有与数据库相关的编码。作为一名独立的开发人员,我没有时间坐下来为我编写的每个应用程序编写SQL,因此使用ES之类的生成器可以让我轻松自如,节省几天甚至几周的时间 我通常为我的应用程序使用的每个表编写一系列帮助器类。我所面临的问题是,除了在处理返回数据的每个方法上坚持尝试之外,我真的不知道处理任何SQL超时或失败连接的最佳方法 在EntitySpaces中,只有在运行任何类型的CRUD命令时,才会构建和执行SQL连接 例如: public TblUserC

我使用EntitySpace进行所有与数据库相关的编码。作为一名独立的开发人员,我没有时间坐下来为我编写的每个应用程序编写SQL,因此使用ES之类的生成器可以让我轻松自如,节省几天甚至几周的时间

我通常为我的应用程序使用的每个表编写一系列帮助器类。我所面临的问题是,除了在处理返回数据的每个方法上坚持尝试之外,我真的不知道处理任何SQL超时或失败连接的最佳方法

在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;

    }
当我的助手类被告知将某个公司的用户列表分配给组合框时,将调用此方法。然后该方法调用它,我将数据分配给列表。我有大约30个,在特定于表的helper类中都称为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)
        {
            //
        }

    }

我还能做什么?

这并不能真正回答您的问题,但您可以尝试学习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;

}

在我看来,它更具可读性。

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


你试过亚音速(免费版)和LLBLGen(商业版)吗。两者都将为您生成DAL和一些web组件。您对EntitySpace是否满意?您的回答将有助于我完成自己的项目。

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


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

@Lucas:tag指定“.net2.0”。所以LINQ可能是不可能的。哦,没有仔细看。接得好!如果他按照你的建议去做,那么他就必须读懂你的心思!;-)我使用EntitySpace和LLBLGen已有几年了。我更喜欢实体空间。它比LLBLGen简单得多,读起来更像SQL。来自ES的Web网格也非常好,可以为您节省很多时间。这太棒了。谢谢你的意见