/
SqlServerExpress.cs
82 lines (66 loc) · 2.66 KB
/
SqlServerExpress.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using Ivony.Data.SqlClient;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ivony.Data
{
/// <summary>
/// 提供 SQL Server Express 支持
/// </summary>
public static class SqlServerExpress
{
/// <summary>
/// 通过连接 SQL Server Express LocalDB 实例,创建 SQL Server 数据库访问器
/// </summary>
/// <param name="database">数据库名称或者数据库文件路径</param>
/// <param name="configuration">SQL Server 配置</param>
/// <returns>SQL Server 数据库访问器</returns>
public static SqlDbExecutor ConnectLocalDB( string database, SqlDbConfiguration configuration = null )
{
configuration = configuration ?? SqlServerExpress.Configuration;
return Connect( database, @"(LocalDB)\" + configuration.LocalDBInstanceName, configuration );
}
/// <summary>
/// 通过连接 SQL Server Express 默认实例,创建 SQL Server 数据库访问器
/// </summary>
/// <param name="database">数据库名称或者数据库文件路径</param>
/// <param name="configuration">SQL Server 配置</param>
/// <returns>SQL Server 数据库访问器</returns>
public static SqlDbExecutor Connect( string database, SqlDbConfiguration configuration = null )
{
configuration = configuration ?? SqlServerExpress.Configuration;
return Connect( database, @"(local)\" + configuration.ExpressInstanceName, configuration );
}
/// <summary>
/// 通过连接 SQL Server Express 指定实例,创建 SQL Server 数据库访问器
/// </summary>
/// <param name="database">数据库名称或者数据库文件路径</param>
/// <param name="datasource">SQL Server 实例名称</param>
/// <param name="configuration">SQL Server 配置</param>
/// <returns>SQL Server 数据库访问器</returns>
private static SqlDbExecutor Connect( string database, string datasource, SqlDbConfiguration configuration = null )
{
var builder = new SqlConnectionStringBuilder()
{
DataSource = datasource,
IntegratedSecurity = true,
};
if ( database.IndexOfAny( Path.GetInvalidPathChars() ) == -1 && Path.IsPathRooted( database ) )
builder.AttachDBFilename = database;
else
builder.InitialCatalog = database;
return SqlServer.Connect( builder.ConnectionString, configuration );
}
/// <summary>
/// 获取或修改 SQL Server 默认配置
/// </summary>
public static SqlDbConfiguration Configuration
{
get { return SqlServer.Configuration; }
}
}
}