Rafy 领域实体框架,在结构设计上支持各种数据库。目前只是支持了最常用的几种数据库:SqlServer 2005 以上版本,Oracle 10G,Sql CE 4.0。
数据库切换
一个数据库中可以存储多个实体。但是每个领域实体仓库,都只能对应一个数据库,通过重写 ConnectionStringSettingName 属性来指定对应的数据库连接字符串配置名。例如以下代码把 Warehouse 实体类都存储到以 JXC 为配置名称的数据库中:
public class WarehouseRepository : EntityRepository
{
/// <summary>
/// 此仓库存储实体对应的数据库连接配置名称。
/// </summary>
protected override string ConnectionStringSettingName
{
get { return "JXC"; }
}
}
要在多种数据库间切换,只需要在应用程序配置文件中,配置对应数据库的连接字符串即可。
当配置文件中没有做任何配置时,框架会自动生成一个连接字符串。这个连接字符串使用本地的 SqlServer。
Sql Server 2005+
如果需要连接到指定的 SqlServer 服务器,只需要修改为以下配置即可:
<add name="JXC" connectionString="Data Source=.\SQLExpress;Initial Catalog=Rafy_JXC;User ID=sa;Password=***" providerName="System.Data.SqlClient"/>
Oracle 10G
Rafy 使用纯托管的 ODP.NET 来访问 Oracle。
首先,需要使用 NuGet 来引用最新的纯托管 ODP.NET:Oracle.ManagedDataAccess,版本在 12.1.022 以上即可。
接着,配置正确的连接字符串后,即可自动更新数据库中的表结构。Oracle 使用以下连接字符串:
<connectionStrings>
<add name="JXC" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=hqf;Password=***;" providerName="Oracle.ManagedDataAccess.Client"/>
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
由于 Oracle 数据库的特殊性,目前并不支持创建 Oracle 数据库,需要手工创建好数据库和用户后,才可以在指定的库中生成所有的表和字段。
Sql Server Compact Edition 4.0
要使用 SQLCE 4.0,需要添加 SQLCE 的数据库提供程序工厂,并使用以下连接字符串:
<connectionStrings>
<add name="JXC" connectionString="Data Source=Data\JXC.sdf" providerName="System.Data.SqlServerCe" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe"/>
<add name="SqlServerCe Data Provider" invariant="System.Data.SqlServerCe" description="SqlServerCe Data Provider"
type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>
MySql 5.0+
要使用 MySql ,需要添加 MySql 的数据库提供程序工厂,并使用以下连接字符串:
<connectionStrings>
<add name="JXC" connectionString="server=localhost;database=JXC;user id=****;password=******;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySqlClient Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySqlServer" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>