微软企业库5.0 支持 MySql

三步让 企业库支持 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
{
  /// <summary>
  /// Describes a <see cref="SqlDatabase"/> instance, aggregating information from a
  /// <see cref="ConnectionStringSettings"/>.
  /// </summary>
  public class MySqlDatabaseData : DatabaseData
  {
    #region Public Methods
    public MySqlDatabaseData(ConnectionStringSettings connectionStringSettings, IConfigurationSource configurationSource)
      : base(connectionStringSettings, configurationSource)
    {
    }
    #endregion

    /// <summary>
    /// Creates a <see cref="TypeRegistration"/> instance describing the <see cref="SqlDatabase"/> represented by
    /// this configuration object.
    /// </summary>
    /// <returns>A <see cref="TypeRegistration"/> instance describing a database.</returns>
    public override System.Collections.Generic.IEnumerable<Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.TypeRegistration> GetRegistrations()
    {
      yield return new TypeRegistration<Database>(
          () => new MySqlDatabase(
              ConnectionString,
              Container.Resolved<IDataInstrumentationProvider>(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
{
  /// <summary>
  /// MySql 数据库访问基础
  /// </summary>
  [ConfigurationElementType(typeof(MySqlDatabaseData))]
  public class MySqlDatabase : Database
  {
    /// <summary>
    /// Initializes a new instance of the <see cref="SqlDatabase"/> class with a connection string.
    /// </summary>
    /// <param name="connectionString">The connection string.</param>
    public MySqlDatabase(string connectionString)
      : base(connectionString, MySqlClientFactory.Instance)
    {
    }
    /// <summary>
    /// Initializes a new instance of the <see cref="SqlDatabase"/> class with a
    /// connection string and instrumentation provider.
    /// </summary>
    /// <param name="connectionString">The connection string.</param>
    /// <param name="instrumentationProvider">The instrumentation provider.</param>
    public MySqlDatabase(string connectionString, IDataInstrumentationProvider instrumentationProvider)
      : base(connectionString, MySqlClientFactory.Instance, instrumentationProvider)
    {
    }

    /// <summary>
    /// Retrieves parameter information from the stored procedure specified in the <see cref="DbCommand"/> and populates the Parameters collection of the specified <see cref="DbCommand"/> object.
    /// </summary>
    /// <param name="discoveryCommand">The <see cref="DbCommand"/> to do the discovery.</param>
    /// <remarks>The <see cref="DbCommand"/> must be a <see cref="SqlCommand"/> instance.</remarks>
    protected override void DeriveParameters(System.Data.Common.DbCommand discoveryCommand)
    {
      MySqlCommandBuilder.DeriveParameters((MySqlCommand)discoveryCommand);
    }
  }
}

3.添加 config 支持

<?xml version="1.0"?>
<configuration>
  <!--MySql 企业库支持-begin-->
  <configSections>
    <!--01.声明一个数据库配置节-->
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,Microsoft.Practices.EnterpriseLibrary.Data" />
  </configSections>
  <dataConfiguration >
    <!--02.注册MySql数据提供者-->
    <providerMappings>
      <add name="MySql.Data.MySqlClient"
      databaseType="Grass.MySqlDal.Data.MySqlDatabase, Grass.MySqlDal" />
    </providerMappings>
  </dataConfiguration>
  <system.data>
    <!--03.注册MySql数据提供者工厂类-->
    <DbProviderFactories>
      <add
          name="MySql Data Provider Factory"
          invariant="MySql.Data.MySqlClient"
          description="MySql Data Provider"
          type="MySql.Data.MySqlClient.MySqlClientFactory" />
    </DbProviderFactories>
  </system.data>
  <!--MySql 企业库支持-end-->
  <connectionStrings>
    <!--04.数据库连接字符串-->
    <add name="test_MySql"
         connectionString="server=127.0.0.1;database=test;User Id=root;Password=123456;Persist Security Info=True;"
         providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>
</configuration>

ok 了,试下吧~~

微软企业库5.0 支持 MySql,布布扣,bubuko.com

时间: 2024-10-19 12:15:03

微软企业库5.0 支持 MySql的相关文章

微软企业库5.0 调用 MySql 分页存储过程

1.需要完成两个前置条件后才可以使用 微软企业库5.0 调用 MySql 存储过程 微软企业库5.0 支持 MySql MySql 分页存储过程 2.需要添加一个继承 IParameterMapper 接口的类分配查询参数 using System.Data; using System.Data.Common; using Microsoft.Practices.EnterpriseLibrary.Data; using Grass.Extend; namespace Grass.MySqlDa

微软企业库5.0学习笔记(10)ASP.NET模块依赖注入

您可以使用HTTP模块,一个到ASP.NET HttpApplicationState类的扩展,在Global.asax编写代码强制ASP.NET在每一个页面请求时自动注入依赖的对象,就像在ASP.NET Web窗体应用程序中讨论的一样. 下列方法显示了一个合适的方法能够获取PreRequestHandlerExecute事件将它自己注入到ASP.NET的执行流水线,在每个页面请求中通过容器的BuildUp方法运行Http模块,并获取OnPageInitComplete事件.当OnPageIni

微软企业库5.0 学习之路——第九步、使用PolicyInjection模块进行AOP—PART3——内置Call Handler介绍

在前面的Part1和Part2中 我已经介绍了PolicyInjection模块的内置的Matching Rule和自定义Matching Rule的基本信息及配置使用方法,不过光有Matching Rule进行验证匹配还不够,还必须要有相应的操作——Call Handler,所以今天继续介绍PolicyInjection模块内置的Call Handler. 一.PolicyInjection模块内置的Call Handler 通过将Call Handler和Part1.Part2中 的Matc

微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART1——为什么要使用Unity? (转)

http://www.cnblogs.com/kyo-yo/archive/2010/11/01/Learning-EntLib-Tenth-Decoupling-Your-System-Using-The-Unity-PART1-Why-Use-Unity.html

在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreSQL.IBM DB2.或者国产达梦数据库等等,这些数据库的共同特点是关系型数据库,基本上开发的模型都差不多,不过如果我们基于ADO.NET的基础上进行开发的话,那么各种数据库都有自己不同的数据库操作对象,微软企业库Enterprise Library是基于这些不同数据库的操作做的抽象模型,适合多数据

分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)

分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企业库5.0实现. 这块应该算是库存模块中的核心模块了,因为该块的业务逻辑比较多,比较繁琐,大致讲讲业务逻辑吧,大致的逻辑为:出库单/出库单-->填写订单-->出库/入库-->修改库存信息,按照这个顺序来完成入库出库,顺序不能颠倒,同时还要实现订单的删除,修改,在修改库存信息时由于表和表之间有很多的外键关系,所以要同时删除多张表中含有删

微软企业库的Cache

微软企业库的Cache 通常,应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能.基于微软的企业库,我们的快速创建一个缓存的实现. 新建PrismSample.Infrastructure.Cache 新建一个类库项目,将其命名为PrismSample.Infrastructure.Cache,然后从nuget中下载微软企业库的Cache. 然后新建我们的CacheManager类: using Microsoft.Practices.Enterpr

使用Microsoft EnterpriseLibrary(微软企业库)日志组件把系统日志写入数据库和xml文件

这里只是说明在项目中如何配置使用微软企业库的日志组件,对数据库方面的配置请参考其他资料. 1.在项目中添加Microsoft.Practices.EnterpriseLibrary.Data.dll.Microsoft.Practices.EnterpriseLibrary.Logging.dll.Microsoft.Practices.EnterpriseLibrary.Logging.Database.dll这三个引用. 2.打开EnterpriseLibrary的配置工具EntLibCon

微软企业库研究之日志模块

很久之前研究微软的企业库时候写的,要注意需要引用Microsoft.Practices.EnterpriseLibrary.Logging组件库,因为ASP.NET5出来,微软在.netframework中自带了Logger,所以应该以后也不会用上. using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.T