静态C#变量,由于数据库连接而引发错误

本文关键字:错误 数据库连接 变量 静态 | 更新日期: 2023-09-27 18:20:10

我想知道是否有一种方法可以克服这种情况:

我有一个静态类,它有一个叫做的静态变量

static string[] Cities = GetCities();

并且CCD_ 1从数据库中获得所有的城市。问题是,我在GetCities中遇到了一个错误,因为数据服务器有时不可用,即使服务器再次可用,这个错误也不会消失。
我认为这是因为可变城市只创建过一次。。。

静态C#变量,由于数据库连接而引发错误

我认为这是因为可变城市只创建了一次

这是正确的:GetCities()将只有一个调用;如果失败,将不会有其他调用。若要解决此问题,请将Cities更改为只读属性,并在获得结果时缓存GetCities()的结果。

static string[] cachedCities = null;
public static string[] Cities {
    get {
        return cachedCities ?? (cachedCities = GetCities());
    }
}

在初始化类型时确实不应该进行数据库访问。

考虑为数据库查询引入缓存机制。

每个类只进行一次静态初始化。当静态初始化期间发生异常时,CLR会存储该异常。该类的未来使用将自动重新引发相同的异常,而不是触发任何重新初始化。您无法更改此行为。