zoukankan      html  css  js  c++  java
  • 微软企业库支持 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>  
        <!--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>  
  • 相关阅读:
    图像连通域标记算法研究
    介绍给大家学习Silverlight的网址!
    (1)Silverlight开发工具Microsoft Expression Blend 2 之“Hello SilverLight”
    (4)Silverlight开发工具Microsoft Expression Blend 2 之“Combine切割组合效果”
    (3下)Silverlight开发工具Microsoft Expression Blend 2 之“States和Object面板简单“按钮””
    (2)Silverlight开发工具Microsoft Expression Blend 2 之“左侧ToolBox”
    SilverLight 2正式版已经发布,Silverlight Toolkit即将和大家见面
    什么是RIA??未来发展方向!
    Microsoft SQL Server Database Publishing Wizard 使用
    (3上)Silverlight开发工具Microsoft Expression Blend 2 之“States和Object面板简单“按钮””
  • 原文地址:https://www.cnblogs.com/weiweithe/p/4346424.html
Copyright © 2011-2022 走看看