WebMisCentral-Client 適配MySql資料庫

jackchain發表於2014-05-16

由於本身WebMisCentral採用的是EF5.0,所以適配起來還是非常簡單的,下面看操作:

1.ElegantWM.WebUI層中(或者ElegantWM.DAL)通過NUGET下載MySQL.Data 6.7.5

2.修改Web.config如下:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
    </sectionGroup>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <log4net configSource="log4netFile.xml"></log4net>
  <connectionStrings>
    <!--主資料庫,支援多資料庫-->
    <add name="SqlServerDB" providerName="System.Data.SqlClient"  connectionString="Server=localhost;Uid=sa;Pwd=o;DataBase=CN9295;" />
    <add name="DefaultDB" providerName="MySql.Data.MySqlClient"  connectionString="Data Source=localhost;Port=3306;Initial Catalog=WMC;uid=assp;pwd=assp123;Character Set=utf8;" />
  </connectionStrings>
  <appSettings>
    <!--系統名稱-->
    <add key="SysName" value="WMC-Client" />    
    <!--請到http://saas.chinacloudtech.com註冊賬號-->
    <add key="GroupCode" value="" />
    <add key="SysId" value="" />
    <add key="SSO" value="http://saas.chinacloudtech.com" />
    
    <add key="webpages:Version" value="2.0.0.0"/>
    <add key="webpages:Enabled" value="true"/>
    <add key="PreserveLoginUrl" value="true"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
  
  <system.web>
    .....
  </system.web>
  <system.webServer>
    ......
  </system.webServer>
  <runtime>
    ........
  </runtime>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
</configuration>

注意上面藍色的部分是新增的,其他的都不用動。

其中:connectionStrings裡你可以隨便加不同型別或同型別的多個資料庫連線串,因為在WMC中資料庫連線串是細化到物件的,不同物件可以擁有不同的連線串,即操作不同的資料庫

3.修改ElegantWM.DAL的DBContext.cs,改成如下:

 

namespace ElegantWM.DAL
{
    public class DB : DbContext
    {
        //public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        //配置連線串,預設資料庫DefaultDB
        public DB(string _ConnectStr)
            : base(_ConnectStr)
        {
            //這是以前的做法
            //Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings[_ConnectStr].ToString();
            Database.SetInitializer<DB>(null);
            //this.Configuration.LazyLoadingEnabled = false;
        }

 

4.遺憾的是MySql裡的timestamp RowVersion在C# EF裡支援不好,需要將byte[] 修改成 DateTime,故你需要將ElegantWM.EntityModel裡面的Entity.cs和IEntity.cs中的RowVersion型別修改為DateTime,即可。

5.OK,你可以使用MYSQL了

6.MySql監控EF SQL的工具EFProf.exe,收費的,免費30天試用,用起來還是非常方便強大的。

 

相關文章