环境:EntityFramework5.0,MySql5.6,MSSQL2012

EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一点,下面简单演示下:

创建一个MVC4.0,Framework4.5的基本项目,然后重点是WebConfig配置:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--
  3. For more information on how to configure your ASP.NET application, please visit
  4. http://go.microsoft.com/fwlink/?LinkId=152368
  5. -->
  6. <configuration>
  7. <configSections>
  8. <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  9. <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  10. </configSections>
  11. <connectionStrings>
  12. //无论多少类型,多少个同类型数据库,尽管加吧
  13. <add name="DefaultDB" connectionString="Server=localhost;Uid=sa;Pwd=ovenjackchain;DataBase=CN9295;" providerName="System.Data.SqlClient"/>
  14. <add name="DbConMySql" providerName="MySql.Data.MySqlClient" connectionString="Data Source=172.16.205.61;Port=3306;Initial Catalog=WMC;uid=assp;pwd=assp123;" />
  15. </connectionStrings>
  16. <appSettings>
  17. <add key="webpages:Version" value="2.0.0.0" />
  18. <add key="webpages:Enabled" value="false" />
  19. <add key="PreserveLoginUrl" value="true" />
  20. <add key="ClientValidationEnabled" value="true" />
  21. <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  22. </appSettings>
  23. <system.web>
  24. <httpRuntime targetFramework="4.5" />
  25. <compilation debug="true" targetFramework="4.5" />
  26. <authentication mode="Forms">
  27. <forms loginUrl="~/Account/Login" timeout="" />
  28. </authentication>
  29. <pages>
  30. <namespaces>
  31. <add namespace="System.Web.Helpers" />
  32. <add namespace="System.Web.Mvc" />
  33. <add namespace="System.Web.Mvc.Ajax" />
  34. <add namespace="System.Web.Mvc.Html" />
  35. <add namespace="System.Web.Optimization" />
  36. <add namespace="System.Web.Routing" />
  37. <add namespace="System.Web.WebPages" />
  38. </namespaces>
  39. </pages>
  40. <profile defaultProvider="DefaultProfileProvider">
  41. <providers>
  42. <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  43. </providers>
  44. </profile>
  45. <membership defaultProvider="DefaultMembershipProvider">
  46. <providers>
  47. <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="" minRequiredPasswordLength="" minRequiredNonalphanumericCharacters="" passwordAttemptWindow="" applicationName="/" />
  48. </providers>
  49. </membership>
  50. <roleManager defaultProvider="DefaultRoleProvider">
  51. <providers>
  52. <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  53. </providers>
  54. </roleManager>
  55. <sessionState mode="InProc" customProvider="DefaultSessionProvider">
  56. <providers>
  57. <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  58. </providers>
  59. </sessionState>
  60. </system.web>
  61. <system.webServer>
  62. <validation validateIntegratedModeConfiguration="false" />
  63. <handlers>
  64. <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  65. <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  66. <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  67. <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="" />
  68. <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="" />
  69. <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  70. </handlers>
  71. </system.webServer>
  72. <runtime>
  73. <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  74. <dependentAssembly>
  75. <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
  76. <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  77. </dependentAssembly>
  78. <dependentAssembly>
  79. <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
  80. <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  81. </dependentAssembly>
  82. <dependentAssembly>
  83. <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
  84. <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  85. </dependentAssembly>
  86. </assemblyBinding>
  87. </runtime>
    下面这里注释掉,否则会默认根据默认工厂来找
  88. <!--<entityFramework>
  89. <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  90. <parameters>
  91. <parameter value="v11.0" />
  92. </parameters>
  93. </defaultConnectionFactory>
  94. --><!--<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF5">
  95. </defaultConnectionFactory>--><!--
  96. </entityFramework>-->
  97. <system.data>
    如果你还有其他的数据库类型,那么只需要在这里加配置即可
  98. <DbProviderFactories>
  99. <remove invariant="MySql.Data.MySqlClient" />
  100. <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" />
  101. </DbProviderFactories>
  102. </system.data>
  103. </configuration>

以上配置部分,斜体和红字的是我修改过的,其他都是项目自动产生的。

测试:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Data.Entity;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Web.Mvc;
  8. using MySql.Data.Entity;
  9. using System.Data.Entity.ModelConfiguration.Conventions;
  10. using System.ComponentModel.DataAnnotations;
  11.  
  12. namespace MvcEFMySql.Controllers
  13. {
  14. //这里是mysql的
  15. public class MyContext : DbContext
  16. {
  17.  
  18. public MyContext(string DefaultDb)
  19. : base(DefaultDb)
  20. {
  21. //Database.DefaultConnectionFactory = MySql.Data.MySqlClient.MySqlClientFactory;
  22. //Database.Connection.ConnectionString = ;
  23. Database.SetInitializer<MyContext>(null);
  24. }
  25.  
  26. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  27. {
  28. //已经存在的数据库,不然会出现负数
  29. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  30. base.OnModelCreating(modelBuilder);
  31. }
  32.  
  33. public DbSet<User> user { get; set; }
  34. }
  35. //这里是sqlserver的
  36. public class SQLContext : DbContext
  37. {
  38. public SQLContext(string DefaultDb)
  39. : base(DefaultDb)
  40. {
  41. //Database.DefaultConnectionFactory = MySql.Data.MySqlClient.MySqlClientFactory;
  42. //Database.Connection.ConnectionString = ;
  43. Database.SetInitializer<MyContext>(null);
  44. }
  45.  
  46. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  47. {
  48. //已经存在的数据库,不然会出现负数
  49. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  50. base.OnModelCreating(modelBuilder);
  51. }
  52.  
  53. public DbSet<DO_Category> category { get; set; }
  54. }
  55.  
  56. public class DO_Category
  57. {
  58. public DO_Category() { }
  59.  
  60. [Key]
  61. public Guid Id { get; set; }
  62. /// <summary>
  63. /// 类目
  64. /// </summary>
  65. public string Category { get; set; }
  66.  
  67. /// <summary>
  68. /// 图标
  69. /// </summary>
  70. public string IconName { get; set; }
  71.  
  72. /// <summary>
  73. /// 排序
  74. /// </summary>
  75. public int OrderIndex { get; set; }
  76.  
  77. /// <summary>
  78. /// 父节点
  79. /// </summary>
  80. public Guid FatherId { get; set; }
  81.  
  82. public string CreateUser { get; set; }
  83.  
  84. public DateTime CreateTime { get; set; }
  85.  
  86. public string ModifyUser { get; set; }
  87.  
  88. public DateTime? ModifyTime { get; set; }
  89.  
  90. [Timestamp]
  91. public Byte[] RowVersion { get; set; }
  92.  
  93. }
  94.  
  95. public class User
  96. {
  97. public Guid Id { get; set; }
  98. public string UserName { get; set; }
  99. }
  100.  
  101. public class HomeController : Controller
  102. {
  103. //
  104. // GET: /Home/
  105.  
  106. public ActionResult Index()
  107. {
  108. //Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
  109. //操作MySql数据库
  110. var context = new MyContext("DbConMySql");
  111. context.user.Add(new User { Id = Guid.NewGuid(), UserName = "jackchain" });
  112. context.SaveChanges();
  113. var userlist= context.user.ToList();
  114. //获取SQLServer数据库内容
  115. var sqlc = new SQLContext("DefaultDB");
  116. ViewBag.clist = sqlc.category.ToList();
  117. return View(userlist);
  118. }
  119. }
  120. }

ok尽情品味吧。EF6的webconfig稍加不同。重点还是webconfig配置

mysql中文乱码问题,请在连接串最后加:Character Set=utf8;

EntityFramework 多数据库链接,MySql,SqlServer,Oracel等的更多相关文章

  1. SQL SERVER 创建远程数据库链接 mysql oracle sqlserver

    遇到的坑 在连接Oracle时,因为服务器为10g 32位版本,然后在本地安装了32为10g客户端,然后一直报错[7302.7303],后来下载了12c 64位版本,安装成功后,问题解决 原因:mss ...

  2. 数据库链接 mysql,sqlserver

    1.生成对象工厂 /// <summary> /// 生成对象工厂 /// </summary> public class DBFactory { /// <summar ...

  3. 数据库:oracle,MySQL,SqlServer   安装资源分享

    1. oracle 11g: 链接:http://pan.baidu.com/s/1bppaqR1 密码:http 2. mysql   链接:http://pan.baidu.com/s/1jH8O ...

  4. Ubuntu中部署Django项目的配置与链接MySQL

    Django的简介 MVT模式的介绍创建项目的虚拟环境 本次使用的是pip安装 一.更新 sudo apt update 二.安装pip sudo apt install python3-pip 三. ...

  5. SQLServer 远程链接MySql数据库详解

    SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...

  6. 用PHP链接mysql数据库

    PHP提供了两套数据库可用于访问mysql数据库 1)MySQL扩展函数数据库 2)MySQLI扩展数据库(improved) 使用MySQLI函数访问MySQL数据库步骤 1)链接数据库管理系统 m ...

  7. Mssql链接mysql数据库

    最近在做mysql数据库实时同步到mssql数据库的方案,花了一周时间,测试通过了,在实际机器上测试出现了若干问题.第一个问题就是在mssql上链接mysql的问题. 第一步,安装 Mysql ODB ...

  8. nodejs remote链接mysql数据库总结

    nodejs链接远端mysql,这个折腾了一个上午才搞定.本以为,直接使用就OK了,但是发现不行,后来查阅各种资料后,终于找到了方法. nodejs链接远端数据库主要分为几个步骤: 1)安装node- ...

  9. Python学习笔记9-Python 链接MySql数据库

    Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...

随机推荐

  1. Java中A instanceof B是什么意思?

    instanceof用来判断内存中实际对象A是不是B类型 出现这种情况经常是需要强制转换的时候class Dog extends Animal譬如dog定义了自己的方法wangwang Animal ...

  2. [HihoCoder1394]网络流四·最小路径覆盖

    题目大意:从有向无环图中选出若干点不想交的链,使得这些链覆盖所有的点,并且链的条数最小. 思路:设超级源点$S$.超级汇点$T$.将$N$个点复制一份,分为$A$部和$B$部.对于$A$部的所有点$A ...

  3. node+express上传图片

    注意: 别用multer 上传文件了,太坑了,普通文本获取不到,折腾了半天没有解决,最后采用 multiparty 解决了: <!DOCTYPE html><html> < ...

  4. springmvc框架javax.servlet.http.HttpServletResponse出现小红叉

    需要在项目点右键配置属性--->Library--->server runtime--->但是配置不能成功,原因是没有在windows下配置过runtime environment, ...

  5. javac编译出现需要标识符问题解决

    因为没有写public static void mian(String[] args) 在类里面只有属性和方法,内部类.不能直接写System.out.println():

  6. unity 判断物体是否在视角内(巧妙!)

    public var isRendering:boolean=false; private var lastTime:float=0; private var curtTime:float=0; fu ...

  7. win7 64位系统彻底卸载mysql

    一.在控制面板中卸载mysql软件,卸载后删除mysql安装目录下的所有文件 二.windows+R运行“regedit”文件,打开注册表 三.删除注册表:HKEY_LOCAL_MACHINE\SYS ...

  8. Java中的ReentrantLock和synchronized两种锁定

    原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之 ...

  9. Winform 打包 混淆 自动更新

    路径: 最终的解决方案是,ConfuserEx+Installshield+AutoUpdater.NET,ConfuserEx做代码混淆工作,Installshield可以解决注册表的问题,Auto ...

  10. 经验:使用 Cache 时注意 DateTime.Now

    如果使用了缓存,比如方法 A 吧,那么你需要注意 DateTime.Now 对缓存的影响,简单来说,DateTime.Now 可能出现在两个地方: 在调用方,将 DateTime.Now 作为参数传递 ...