数据库连接字符串
Fireasy 提供了一个 ConnectionString
类来存放连接字符串,它可以和 System.String
进行显式和隐式转换。
各种数据库的连接串你可以去查阅网上的资料。
ConnectionString
的常用属性如下:
1、IsTracking 属性
你可以在连接字符串里使用 IsTracking=true 来开启 SQL
跟踪,这是一个 Fireasy 特有的属性,它不会提供给 DbConnection
初始化。如:
Data Source=localhost;database=northwind;User Id=root;password=faib;pooling=true;charset=utf8;tracking=true
开启 IsTracking 后,执行的 SQL
将在应用程序目录下的 __dbtrack 目录下生成跟踪日志,你可以自己去实现 ICommandTracker
然后通过 IOC
配置去替换掉默认的日志输出。
2、Properties 属性
这是一个类似字典的 ConnectionProperties
对象,用于存放连接字符串中的 Key-Value,除了使用索引器取值外,还可以使用 TryGetValue 或 TryGetValueWithDefaultValue 方法进行取值,它们都支持使用多个 Key 进行匹配,比如用户ID,连接串里有可能是 userid、user id 或 user,此时就可以使用 TryGetValue 方法进行匹配。如下所示:
[TestMethod]
public void TestGetConnectionStringProperty()
{
var constr = (ConnectionString)"Data Source=localhost;database=northwind;User Id=root;password=faib;";
var userId = constr.Properties.TryGetValue("userid", "user id", "user");
Assert.AreEqual("root", userId);
}
通过 TrySetValue 方法可以动态改变连接字符串中的值,然后调用 Update 方法更新到连接字符串中,如下所示,动态将数据库改成了 samples:
[TestMethod]
public void TestSetConnectionStringProperty()
{
var constr = (ConnectionString)"Data Source=localhost;database=northwind;User Id=root;password=faib;";
constr.Properties.TrySetValue("samples", "database").Update();
}
💡 关于路径定位符
连接字符串里可以使用 |appdir|
、|datadirectory|
表示当前程序所在的目录,再使用 ../ 等进行相对定位。如 |appdir|
../db/test.mdb。
还可以使用 Environment.SpecialFolder
枚举进行定位。如 |desktop|
表示桌面、|system|
表示系统目录等等,具体可参考其枚举值。
3、分布式数据库连接字符串
DistributedConnectionString
类继承自 ConnectionString
类,并增加了 DistributedMode
属性,以便区分是 Master 还是 Slave。