使用Entity Framework测试与SQL Server的连接

时间:2014-05-19 07:56:14

标签: c# sql-server entity-framework

EntityFrameworkCode First方式创建数据库之前,我需要验证Data SourceUserIdPassword。此时,没有数据可用于测试连接。我的目标是为产品配置connectionString,并为用户修改web.config。所以我需要一种方法来验证配置是否有效。尤其是Data SourceUserIdPassword的准确性。

因此,我希望测试SQL Server的连接,并且SQL Server可能根本没有任何数据库。我需要测试关于Data SourceUserIdPassword的连接能力。如果某些参数无效,则应向用户显示错误消息。

所以,我需要以下功能。

  1. Data SourceUserIdPassword由用户输入决定。
  2. 没有创建额外的数据库。如果创建了任何用于测试的数据库,则应在最后删除它。

1 个答案:

答案 0 :(得分:0)

样本模型

我用EntityFramework写了一个简单的Database model,创建了用于测试,并在最后删除了数据库。 connectionString由程序组成,因此TestDbContext应接受DbConnection参数。

public class Test
{
    public long Id { get; set; }
    public string Field { get; set; }
}
public class TestDbContext : DbContext
{
    public DbSet<Test> TestSet { get; set; }

    public TestDbContext() {}
    /// For self-composed connection string.
    public TestDbContext(DbConnection conn) : base(conn, true) {}
}

撰写连接字符串

然后,connectionString可以由SqlConnectionStringBuilder组成,System.Data.SqlClient用于SqlConnection数据提供者。 DbConnectionsb的子类,它接受SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(); sb.DataSource = ...; //< The `Data Source` parameter // The `InitialCatalog` parameter. // Create an unique database for testing. And avoid name confliction. sb.InitialCatalog = "testing" + Guid.NewGuid().ToString("N"); sb.UserID = ...; //< The `UserId` sb.Password = ...; //< The `Password` of `UserId`. sb.MultipleActiveResultSets = true; SqlConnection dbConn = new SqlConnection(sb.ToString()); // dbConn.Open(); // It will be failed when the database had not been created. // But, I need to verify the db server, account and password, // no matter whether the database is created or not. 生成的字符串。

EntityFramework

测试连接

然后,按// Test by self-composed connection string. using (TestDbContext db = new TestDbContext(dbConn)) { // Create database. // If failed to connect to the database server, it will throw an exception. db.Database.CreateIfNotExists(); // Insert an item. var item = new Test() { Field="Hello World!!"}; db.TestSet.Add(item); db.SaveChanges(); // Delete database after testing db.Database.Delete(); } 测试连接。这很方便。

{{1}}