三步让 企业库支持 mysql 数据库
1.创建 MySqlDatabaseData 类
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation;
using System.Configuration;
namespace Grass.MySqlDal.Data
{
///
/// Describes a instance, aggregating information from a
/// .
///
public class MySqlDatabaseData : DatabaseData
{
#region Public Methods
public MySqlDatabaseData(ConnectionStringSettings connectionStringSettings, IConfigurationSource configurationSource)
: base(connectionStringSettings, configurationSource)
{
}
#endregion
///
/// Creates a instance describing the represented by
/// this configuration object.
///
/// A instance describing a database.
public override System.Collections.Generic.IEnumerable GetRegistrations()
{
yield return new TypeRegistration(
() => new MySqlDatabase(
ConnectionString,
Container.Resolved(Name)))
{
Name = Name,
Lifetime = TypeRegistrationLifetime.Transient
};
}
}
}
2.创建 MySqlDatabase 类
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation;
using MySql.Data.MySqlClient;
namespace Grass.MySqlDal.Data
{
///
/// MySql 数据库訪问基础
///
[ConfigurationElementType(typeof(MySqlDatabaseData))]
public class MySqlDatabase : Database
{
///
/// Initializes a new instance of the class with a connection string.
///
/// The connection string.
public MySqlDatabase(string connectionString)
: base(connectionString, MySqlClientFactory.Instance)
{
}
///
/// Initializes a new instance of the class with a
/// connection string and instrumentation provider.
///
/// The connection string.
/// The instrumentation provider.
public MySqlDatabase(string connectionString, IDataInstrumentationProvider instrumentationProvider)
: base(connectionString, MySqlClientFactory.Instance, instrumentationProvider)
{
}
///
/// Retrieves parameter information from the stored procedure specified in the and populates the Parameters collection of the specified object.
///
/// The to do the discovery.
/// The must be a instance.
protected override void DeriveParameters(System.Data.Common.DbCommand discoveryCommand)
{
MySqlCommandBuilder.DeriveParameters((MySqlCommand)discoveryCommand);
}
}
}
3.加入 config 支持
databaseType="Grass.MySqlDal.Data.MySqlDatabase, Grass.MySqlDal" />
name="MySql Data Provider Factory"
invariant="MySql.Data.MySqlClient"
description="MySql Data Provider"
type="MySql.Data.MySqlClient.MySqlClientFactory" />
connectionString="server=127.0.0.1;database=test;User Id=root;Password=123456;Persist Security Info=True;"
providerName="MySql.Data.MySqlClient"/>
ok 了,试下吧~~