gpt4 book ai didi

entity-framework - 在 Entity Framework 内快速测试数据库连接

转载 作者:行者123 更新时间:2023-12-04 21:00:02 24 4
gpt4 key购买 nike

[我是 ADO.NET 和 Entity Framework 的新手,所以如果这个问题看起来很奇怪,请原谅我。]

在我的 WPF 应用程序中,用户可以在运行时在不同的数据库之间切换。当他们这样做时,我希望能够做一个 检查数据库是否仍然可用。我很容易获得的是 ObjectContext。我正在执行的测试是获取一个非常小的表的总记录数,如果它返回结果则它通过,如果我得到一个异常则它失败。我不喜欢这个测试,它似乎是最容易用 ObjectContext 做的。

我已经尝试在连接字符串和 ObjectConntext 中设置连接超时,并且似乎对第一个场景进行了任何更改,而第二个场景已经很快,因此如果它更改任何内容,则不会引起注意。

场景一

如果在第一次访问之前连接关闭,它需要大约 30 秒才能给我提供底层提供程序失败的异常。

场景二

如果在我启动应用程序并访问它时数据库已启动,则在使用测试时连接断开很快并且几乎立即返回。

我希望描述的第一个场景与第二个场景一样快。

请让我知道如何最好地解决这个问题,如果有更好的方法来快速测试与数据库的连接,请提供建议。

最佳答案

确实没有简单或快速的方法来解决这个问题。 Entity Framework 将忽略 ConnectionTimeout 值。我使用的解决方案是创建一种方法,通过传入要验证的位置来检查上下文是否有效,然后从已知的非常小的表中获取计数。如果这引发异常,则上下文无效,否则无效。这是一些示例代码,显示了这一点。

public bool IsContextValid(SomeDbLocation location)
{
bool isValid = false;

try
{
context = GetContext(location);
context.SomeSmallTable.Count();
isValid = true;
}
catch
{
isValid = false;
}

return isValid;
}

关于entity-framework - 在 Entity Framework 内快速测试数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com