如何检查Linq2Sql应用程序中的连通性,使其在失败时不会冻结
本文关键字:失败 冻结 连通性 何检查 检查 应用程序 Linq2Sql | 更新日期: 2023-09-27 18:02:14
所以我一直在使用LINQ to SQL (dbml)为我的c#项目现在一点,因为它使集成SQL对我来说很容易。唯一的问题是一切都是自动化的,我不知道如何真正编辑东西。
使用LINQ to SQL使其自动连接到数据库IP与用户和pw在它在配置文件中创建的连接字符串,但说数据库没有启动。或者我想更改ip…该应用程序在启动时冻结。
在自动连接之前如何测试连接?我似乎找不到代码中的具体位置
您的实体设置,我在Linq to SQL上生锈了,但认为它是相似的,是在您创建Linq to SQL模型的项目的App.Config中。它们与此类似(使用实体模型):
< connectionStrings>
< add name="Example" connectionString="metadata=res://*/ExampleDB.csdl|res://*/ExampleDB.ssdl|res://*/ExampleDB.msl;provider=System.Data.SqlClient;provider connection string="data source=ACTUALSERVER;initial catalog=ACTUALDATABASE;persist security info=True;user id=(SET USER HERE);password=(SET PASSWORD HERE);multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
< /connectionStrings>
连接的重要部分是连接字符串:
"data source=ACTUALSERVER;initial catalog=ACTUALDATABASE;persist security info=True;user id=(SET USER HERE);password=(SET PASSWORD HERE);
如果需要,可以尝试将其更改为不同的连接字符串,并保持元数据相同。对于"Dev","QA","UAT","PROD"等不同的环境……然后复制并粘贴以'<添加name>的结尾部分。然后只需更改连接字符串并给它一个不同的名称。然后可以让调用代码使用不同的上下文或连接,例如:添加name>
using(MyContext context = new MyContext())
{
context.Connection = (new connection)
(your data return method)
}
你可以直接在你的context(MyContext)的构造函数中这样做。不能回忆。一般来说,我通常会设置多个配置"DEV","QA","UAT","PROD",并让它们为服务的不同环境构建。您可以手动构建连接字符串,但动态连接字符串可能是一种痛苦,因为您作为开发人员现在需要确保以下几点:
- Dev环境的模型与模型中的对象完全匹配。
- 如果您正在调用一组用户,您要确保您的用户在某些环境中具有权限
- 你没有把你的代码的完整性的风险,显示太多的公开用户设置。
(假设你正在使用Sql Server)
扩展djangojazz的答案。
public void TestDbConnection()
{
Task.Factory.StartNew(() =>
{
bool isAvailable = false;
using(MyContext context = new MyContext())
{
var connection = ((IObjectContext)context).Connection as SqlConnection;
try
{
connection.Open();
isAvailble = true;
}
catch (Exception ex)
{
}
}
TestDbConnectionComplete(isAvailable);
});
}
public void TestDbConnectionComplete(bool isAvailable)
{
}