微软企业库支持 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>
<!--.声明一个数据库配置节-->
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,Microsoft.Practices.EnterpriseLibrary.Data" />
</configSections>
<dataConfiguration >
<!--.注册MySql数据提供者-->
<providerMappings>
<add name="MySql.Data.MySqlClient"
databaseType="Grass.MySqlDal.Data.MySqlDatabase, Grass.MySqlDal" />
</providerMappings>
</dataConfiguration>
<system.data>
<!--.注册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>
<!--.数据库连接字符串-->
<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>

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

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

    在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...

  2. 在开发框架中扩展微软企业库,支持使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库

    在前面随笔<在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容3 ...

  3. 权限管理系统源码分析(ASP.NET MVC 4.0 + easyui + EF6.0 + MYSQL/MSSQLSERVER +微软企业库5.0+日志绶存)

    系统采用最先进技术开发: (ASP.NET MVC 4.0 + easyui + EF6.0 + MYSQL/MSSQLSERVER +微软企业库5.0+日志绶存) 大家可以加我QQ讨论 309159 ...

  4. C#利用微软企业库Enterprise Library配置mysql数据库

    在C#项目中,很多时候到要用到Enterprise Library.这里只是用一个很简单的小例子来演示一下Enterprise Library在VS2010中操作MySQL数据库的流程. 1,利用En ...

  5. 微软企业库5.0学习-Security.Cryptography模块

    一.微软企业库加密应用模块提供了两种加密: 1.Hash providers :离散加密,即数据加密后无法解密 2.Symmetric Cryptography Providers:密钥(对称)加密法 ...

  6. [EntLib]微软企业库5.0 学习之路——第一步、基本入门

    话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...

  7. 微软企业库5.0 学习之路——第四步、使用缓存提高网站的性能(EntLib Caching)

    首先先补习下企业库的Caching Application Block的相关知识: 1.四大缓存方式,在Caching Application Block中,主要提供以下四种保存缓存数据的途径,分别是 ...

  8. 微软企业库5.0 学习之路——第二步、使用VS2010+Data Access模块建立多数据库项目

    现在我就开始进入学习之路的第二步——Data Access模块,这个模块是企业库中被使用频率最高的模块,它很好的封装了数据库操作应用,为我们进行多数据库系统开发提供了便利,只需更改配置文件就 可以很快 ...

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

    项目源码下载:  WWW.DI81.COM 分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企 ...

随机推荐

  1. 面试问烂的 MySQL 四种隔离级别,看完吊打面试官!

    阅读本文大概需要 5.6 分钟. 来源:网络 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操 ...

  2. java8 instant localDateTime

  3. SLF4J使用,slf4j-api、slf4j-log4j12以及log4j的关系

    SLF4J不同于其他日志类库,与其它有很大的不同.SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( abstraction layer ...

  4. android双进程守护,让程序崩溃后一定可以重启

    由于我们做的是机器人上的软件,而机器人是24小时不间断服务的,这就要求我们的软件不能退出到系统桌面.当然最好是能够做到程序能够不卡顿,不崩溃,自己不退出.由于我们引用了很多第三方的开发包,也不能保证他 ...

  5. vs2015 如何更改背景主题颜色

    打开vs2015 步骤:工具--> 选项 -->环境-->常规-->主题设置

  6. Android Studio 教程

    Android Studio 超详细安装教程 http://dkylin.com/archives/2019/android-studio-installation.html Android Stud ...

  7. 二分查找时间复杂度、partition时间复杂度

    二分查找时间复杂度 partition时间复杂度 O(n) = O(n) + O(n/2) + O(n/4)+.... 然后用等比求和公式得出是O(2n),即O(n)

  8. JFinal 数据库“手动”事务(提交、回滚)

    一.用注解 @Before(Tx.class) 实现 事务回滚 @Before(Tx.class) public void pay() throws Exception { //throws exce ...

  9. cps在jenkins构建报错

    修改ares的版本号即可,改为2.0.1.14-20191126-RELEASE

  10. async异步流程控制神器

    async https://www.npmjs.com/package/async Async is a utility module which provides straight-forward, ...