所以我一直在为我的C#项目使用LINQ to SQL(dbml),因为它使我很容易集成SQL ..唯一的事情是一切都是如此自动化,我不知道如何实际上是编辑东西。
使用LINQ to SQL使它能够在配置文件中创建的连接字符串中使用用户和pw自动连接到数据库IP,但是说数据库没有启动...或者我想要更改IP ..应用程序在启动时冻结。
如何在自动连接之前测试连接?我似乎无法在代码中找到它的确切位置。
答案 0 :(得分:2)
您对实体的设置,我在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”等...然后复制并粘贴以'&lt;'开头的连接块。添加name =“'直到'providerName ='(thing)'/&gt;的结尾部分。然后只需更改连接字符串并给它一个不同的名称。然后你可以让调用代码使用不同的上下文或连接,如:
using(MyContext context = new MyContext())
{
context.Connection = (new connection)
(your data return method)
}
您可以直接在上下文的构造函数(MyContext)中执行此操作。不记得了。通常我通常会设置多个配置“DEV”,“QA”,“UAT”,“PROD”,并为不同的服务环境构建它们。您可以手动构建连接字符串,但动态连接字符串可能会很困难,因为开发人员现在需要确保一些事情:
答案 1 :(得分:1)
(所有假设您正在使用Sql Server)
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)
{
}