如何检查Linq2Sql应用程序中的连通性,使其在失败时不会冻结

本文关键字:失败 冻结 连通性 何检查 检查 应用程序 Linq2Sql | 更新日期: 2023-09-27 18:02:14

所以我一直在使用LINQ to SQL (dbml)为我的c#项目现在一点,因为它使集成SQL对我来说很容易。唯一的问题是一切都是自动化的,我不知道如何真正编辑东西。

使用LINQ to SQL使其自动连接到数据库IP与用户和pw在它在配置文件中创建的连接字符串,但说数据库没有启动。或者我想更改ip…该应用程序在启动时冻结。

在自动连接之前如何测试连接?我似乎找不到代码中的具体位置

如何检查Linq2Sql应用程序中的连通性,使其在失败时不会冻结

您的实体设置,我在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=&quot;data source=ACTUALSERVER;initial catalog=ACTUALDATABASE;persist security info=True;user id=(SET USER HERE);password=(SET PASSWORD HERE);multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    < /connectionStrings>

连接的重要部分是连接字符串:

&quot;data source=ACTUALSERVER;initial catalog=ACTUALDATABASE;persist security info=True;user id=(SET USER HERE);password=(SET PASSWORD HERE);

如果需要,可以尝试将其更改为不同的连接字符串,并保持元数据相同。对于"Dev","QA","UAT","PROD"等不同的环境……然后复制并粘贴以'<添加name>的结尾部分。然后只需更改连接字符串并给它一个不同的名称。然后可以让调用代码使用不同的上下文或连接,例如:

using(MyContext context = new MyContext())
{
context.Connection = (new connection)
 (your data return method)
}

你可以直接在你的context(MyContext)的构造函数中这样做。不能回忆。一般来说,我通常会设置多个配置"DEV","QA","UAT","PROD",并让它们为服务的不同环境构建。您可以手动构建连接字符串,但动态连接字符串可能是一种痛苦,因为您作为开发人员现在需要确保以下几点:

  1. Dev环境的模型与模型中的对象完全匹配。
  2. 如果您正在调用一组用户,您要确保您的用户在某些环境中具有权限
  3. 你没有把你的代码的完整性的风险,显示太多的公开用户设置。

(假设你正在使用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)
{
}