当前位置:Gxlcms > mysql > EntityFramework多数据库链接,MySql,SqlServer,Oracel等

EntityFramework多数据库链接,MySql,SqlServer,Oracel等

时间:2021-07-01 10:21:17 帮助过:47人阅读

环境:EntityFramework5.0,MySql5.6,MSSQL2012 EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一点,下面简单演示下: 创建一个MVC4.0,Framework4.5的基本项目,然后重点是WebConfig配

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

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

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

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

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

测试:

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

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

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

人气教程排行