MiniAccess是根据mdm.xml文件来操作数据库的,在mdm.xml文件的provider指出了数据提供者的名称,一般来说,数据提供者就是某个数据据库。由于考虑到应用系统可能会提供多中类型数据数据库的支持,比如既支持MSSQL又支持MySQL,因而provider的name属性仅仅在access-type内唯一。这样mdm.xml文件中的access-type和provider二者的名字就唯一的标识了mdm所要访问的数据。

mdm.xml文件可以看作是数据访问层的程序集(dll文件)的组成部分,即像dll文件一样是由程序员编写完成后就改变了。而安装部署系统时根据所选择的数据环境,再在配置文件中确定连接字符串。要在App.config或者web.config中配置MiniAccess的数据库连接,首先要声明自定义的配置节,代码如下:

   1:      <configSections>
   2:          <section name="miniAccess" type="Ruandao.MiniAccess.MiniAccessSection,Ruandao.MiniAccess" />
   3:      </configSections>

miniAccess自定义配置节的语法如下:

   1:      <miniAccess>
   2:          <dataProviders>
   3:              <add name="DemoDatabase" accessType="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DemoDatabase;Integrated Security=True" />
   4:          </dataProviders>
   5:      </miniAccess>

其中,

  1. 属性name和accessType分别对应mdm.xml文件中provider和access-type的name属性值。
  2. 属性connectionString指出连接字符串。
  3. 另外还有一个可选的属性是dataSourceSetter:指出实现了IDataSourceSetter接口的类型名称。

IDataSourceSetter的声明如下:

   1:      /// <summary>
   2:      /// 通过实现该接口的类,可以获得某数据库的连接字符串以及该数据库的类型(MiniAccess存取的类型)。
   3:      /// </summary>
   4:      public interface IDataSourceSetter
   5:      {
   6:          /// <summary>
   7:          /// 获取指定存取的类型,如SqlServer、MySql等。
   8:          /// </summary>
   9:          string GetAccessType();
  10:   
  11:          /// <summary>
  12:          /// 获取连接字符串,用于指向特定数据库。
  13:          /// </summary>
  14:          string GetConnectionString();
  15:      }

如果指定了dataSourceSetter属性,那么在读取配置文件时将实例化dataSourceSetter类型,并用获取到accessType和connectionString覆盖配置节中的设定值。

dataSourceSetter属性的价值在于:系统可以在运行时任意确定和切换所要访问的数据库,而不是在配置项中固定不变。所要做的仅仅是实现一个IDataSourceSetter的类型。