微软企业库支持 MySql
微软企业库支持 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的更多相关文章
- 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持
在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...
- 在开发框架中扩展微软企业库,支持使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库
在前面随笔<在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容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 ...
- C#利用微软企业库Enterprise Library配置mysql数据库
在C#项目中,很多时候到要用到Enterprise Library.这里只是用一个很简单的小例子来演示一下Enterprise Library在VS2010中操作MySQL数据库的流程. 1,利用En ...
- 微软企业库5.0学习-Security.Cryptography模块
一.微软企业库加密应用模块提供了两种加密: 1.Hash providers :离散加密,即数据加密后无法解密 2.Symmetric Cryptography Providers:密钥(对称)加密法 ...
- [EntLib]微软企业库5.0 学习之路——第一步、基本入门
话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...
- 微软企业库5.0 学习之路——第四步、使用缓存提高网站的性能(EntLib Caching)
首先先补习下企业库的Caching Application Block的相关知识: 1.四大缓存方式,在Caching Application Block中,主要提供以下四种保存缓存数据的途径,分别是 ...
- 微软企业库5.0 学习之路——第二步、使用VS2010+Data Access模块建立多数据库项目
现在我就开始进入学习之路的第二步——Data Access模块,这个模块是企业库中被使用频率最高的模块,它很好的封装了数据库操作应用,为我们进行多数据库系统开发提供了便利,只需更改配置文件就 可以很快 ...
- 分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)
项目源码下载: WWW.DI81.COM 分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企 ...
随机推荐
- java复制对象之深拷背
在java开发中,有时我们需要复制对象,并且确保修改复制得到的对象不会影响原来的对象. 于是,有些人可能会写出类似以下的代码: public class CloneTest { public stat ...
- Gamma阶段第二次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- 自己动手实现DNS协议
1. 主要内容 不说废话,直接进入正题.先说说本文本文的主要内容,好让你决定是否看下去: 介绍DNS是干什么的: 介绍DNS是如何工作的: 介绍DNS请求与响应的消息格式: 编程实现一个简单的DNS服 ...
- Xamarin.FormsShell基础教程(6)Shell项目内容详情页面
Xamarin.FormsShell基础教程(6)Shell项目内容详情页面 轻拍内容列表页面中的任意一项内容后,进入内容详情页面,如图1.6和图1.7所示.该页面中显示了内容项的标题和具体内容.该页 ...
- setTimeout的小尴尬
我们都知道,alert这种内置弹框会阻塞后续代码执行: 之所以如此,就是因为JavaScript代码在浏览器中是单线程执行的.换句话说,浏览器中只有一个主线程负责运行所有JavaScript代码(不考 ...
- element-ui 上传图片 后清空 图片 显示
使用element-ui组件,用el-upload上传图片,上传图片后再次打开还是会有原来的图片,想要清空原来上传的图片,只需要在组件上绑定ref,在提交成功后的方法里调用this.$refs.upl ...
- 设计模式php+java版本(1) 基础篇 七大原则
2019年9月6日11:15:46 关于设计模式,其实就是编程思想的一个体现,有比较完善的编程思想写出的项目代码和没有编程思想的写出的差距巨大,代码的可读性,可维护性,可扩展性天差地别,有些刚接触的编 ...
- jenkins自动化视频地址
1.腾讯课堂的视频 http://www.ctnrs.com/study.html 我的课程所有列表 2.百度网盘里面的
- Maven多模块工程打包指定模块工程方法
Maven多模块工程打包指定模块工程执行如下命令: mvn clean package -pl 指定模块工程名 -am 参数说明: -am --also-make 同时构建所列模块的依赖模块:-am ...
- Xamarin Assets文件读取
在Assets文件夹中添加nlog.config文件,在属性中将Build Action设置为AndroidAsset var steam = Assets.Open("nlog.confi ...