时间: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配置:
- <!--?xml version=<span-->"<span>1.0</span><span>"</span> encoding=<span>"</span><span>utf-8</span><span>"</span>?>
- <!--<span>
- For more information on how to configure your ASP.NET application, please visit
- http:</span><span>//</span><span>go.microsoft.com/fwlink/?LinkId=152368</span>
- -->
- <configuration>
- <configdivs>
- <!-- For more information on Entity Framework configuration, visit http:<span>//</span><span>go.microsoft.com/fwlink/?LinkID=237468 -->
- <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> />
- <connectionstrings>
- <span> //无论多少类型,多少个同类型数据库,尽管加吧</span><em><strong><span>
- </span></strong></em>
- </connectionstrings>
- "<span>webpages:Version</span><span>"</span> value=<span>"</span><span>2.0.0.0</span><span>"</span> />
- "<span>webpages:Enabled</span><span>"</span> value=<span>"</span><span>false</span><span>"</span> />
- "<span>PreserveLoginUrl</span><span>"</span> value=<span>"</span><span>true</span><span>"</span> />
- "<span>ClientValidationEnabled</span><span>"</span> value=<span>"</span><span>true</span><span>"</span> />
- "<span>UnobtrusiveJavaScriptEnabled</span><span>"</span> value=<span>"</span><span>true</span><span>"</span> />
- <system.web>
- <httpruntime targetframework="<span">"<span>4.5</span><span>"</span> />
- <compilation debug="<span">"<span>true</span><span>"</span> targetFramework=<span>"</span><span>4.5</span><span>"</span> />
- "<span>Forms</span><span>"</span>>
- <forms loginurl="<span">"<span>~/Account/Login</span><span>"</span> timeout=<span>"</span><span>2880</span><span>"</span> />
- <pages>
- <namespaces>
- namespace=<span>"</span><span>System.Web.Helpers</span><span>"</span> />
- namespace=<span>"</span><span>System.Web.Mvc</span><span>"</span> />
- namespace=<span>"</span><span>System.Web.Mvc.Ajax</span><span>"</span> />
- namespace=<span>"</span><span>System.Web.Mvc.Html</span><span>"</span> />
- namespace=<span>"</span><span>System.Web.Optimization</span><span>"</span> />
- namespace=<span>"</span><span>System.Web.Routing</span><span>"</span> />
- namespace=<span>"</span><span>System.Web.WebPages</span><span>"</span> />
- </namespaces>
- </pages>
- <profile defaultprovider="<span">"<span>DefaultProfileProvider</span><span>"</span>>
- <providers>
- "<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> />
- </providers>
- </profile>
- <membership defaultprovider="<span">"<span>DefaultMembershipProvider</span><span>"</span>>
- <providers>
- "<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> />
- </providers>
- </membership>
- <rolemanager defaultprovider="<span">"<span>DefaultRoleProvider</span><span>"</span>>
- <providers>
- "<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> />
- </providers>
- </rolemanager>
- <sessionstate mode="<span">"<span>InProc</span><span>"</span> customProvider=<span>"</span><span>DefaultSessionProvider</span><span>"</span>>
- <providers>
- "<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> />
- </providers>
- </sessionstate>
- </forms></compilation></httpruntime></system.web>
- <system.webserver>
- <validation validateintegratedmodeconfiguration="<span">"<span>false</span><span>"</span> />
- <handlers>
- <remove name="<span">"<span>ExtensionlessUrlHandler-ISAPI-4.0_32bit</span><span>"</span> />
- <remove name="<span">"<span>ExtensionlessUrlHandler-ISAPI-4.0_64bit</span><span>"</span> />
- <remove name="<span">"<span>ExtensionlessUrlHandler-Integrated-4.0</span><span>"</span> />
- "<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> />
- "<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> />
- "<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> />
- </remove></remove></remove></handlers>
- </validation></system.webserver>
- <runtime>
- "<span>urn:schemas-microsoft-com:asm.v1</span><span>"</span>>
- <dependentassembly>
- "<span>System.Web.Helpers</span><span>"</span> publicKeyToken=<span>"</span><span>31bf3856ad364e35</span><span>"</span> />
- <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> />
- </bindingredirect></dependentassembly>
- <dependentassembly>
- "<span>System.Web.Mvc</span><span>"</span> publicKeyToken=<span>"</span><span>31bf3856ad364e35</span><span>"</span> />
- <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> />
- </bindingredirect></dependentassembly>
- <dependentassembly>
- "<span>System.Web.WebPages</span><span>"</span> publicKeyToken=<span>"</span><span>31bf3856ad364e35</span><span>"</span> />
- <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> />
- </bindingredirect></dependentassembly>
- </runtime><br><span>下面这里注释掉,否则会默认根据默认工厂来找</span>
- <span> <em><strong><span><!--<entityFramework>
- <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
- <parameters>
- <parameter value="v11.0" />
- </parameters>
- </defaultConnectionFactory>
- --><!--<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF5">
- </defaultConnectionFactory>--><!--
- </entityFramework>--></span></strong></em></span>
- <system.data><br><span>如果你还有其他的数据库类型,那么只需要在这里加配置即可</span>
- <span><em><span><strong><dbproviderfactories>
- <remove invariant="MySql.Data.MySqlClient">
- </remove></dbproviderfactories></strong></span></em></span>
- </system.data>
- </div></configdivs></configuration>
以上配置部分,斜体和红字的是我修改过的,其他都是项目自动产生的。
测试:
- <span>using</span><span> System;
- </span><span>using</span><span> System.Collections.Generic;
- </span><span>using</span><span> System.Configuration;
- </span><span>using</span><span> System.Data.Entity;
- </span><span>using</span><span> System.Linq;
- </span><span>using</span><span> System.Web;
- </span><span>using</span><span> System.Web.Mvc;
- </span><span>using</span><span> MySql.Data.Entity;
- </span><span>using</span><span> System.Data.Entity.ModelConfiguration.Conventions;
- </span><span>using</span><span> System.ComponentModel.DataAnnotations;
- </span><span>namespace</span><span> MvcEFMySql.Controllers
- {
- </span><span>//</span><span>这里是mysql的</span>
- <span>public</span> <span>class</span><span> MyContext : DbContext
- {
- </span><span>public</span> MyContext(<span>string</span><span> DefaultDb)
- : </span><span>base</span><span>(DefaultDb)
- {
- </span><span>//</span><span>Database.DefaultConnectionFactory = MySql.Data.MySqlClient.MySqlClientFactory;
- </span><span>//</span><span>Database.Connection.ConnectionString = ;</span>
- Database.SetInitializer<mycontext>(<span>null</span><span>);
- }
- </span><span>protected</span> <span>override</span> <span>void</span><span> OnModelCreating(DbModelBuilder modelBuilder)
- {
- </span><span>//</span><span>已经存在的数据库,不然会出现负数</span>
- modelBuilder.Conventions.Remove<pluralizingtablenameconvention><span>();
- </span><span>base</span><span>.OnModelCreating(modelBuilder);
- }
- </span><span>public</span> DbSet<user> user { <span>get</span>; <span>set</span><span>; }
- }
- </span><span>//</span><span>这里是sqlserver的</span>
- <span>public</span> <span>class</span><span> SQLContext : DbContext
- {
- </span><span>public</span> SQLContext(<span>string</span><span> DefaultDb)
- : </span><span>base</span><span>(DefaultDb)
- {
- </span><span>//</span><span>Database.DefaultConnectionFactory = MySql.Data.MySqlClient.MySqlClientFactory;
- </span><span>//</span><span>Database.Connection.ConnectionString = ;</span>
- Database.SetInitializer<mycontext>(<span>null</span><span>);
- }
- </span><span>protected</span> <span>override</span> <span>void</span><span> OnModelCreating(DbModelBuilder modelBuilder)
- {
- </span><span>//</span><span>已经存在的数据库,不然会出现负数</span>
- modelBuilder.Conventions.Remove<pluralizingtablenameconvention><span>();
- </span><span>base</span><span>.OnModelCreating(modelBuilder);
- }
- </span><span>public</span> DbSet<do_category> category { <span>get</span>; <span>set</span><span>; }
- }
- </span><span>public</span> <span>class</span><span> DO_Category
- {
- </span><span>public</span><span> DO_Category() { }
- [Key]
- </span><span>public</span> Guid Id { <span>get</span>; <span>set</span><span>; }
- </span><span>///</span> <span><summary>
- <span>///</span><span> 类目
- </span><span>///</span> <span></span></summary></span>
- <span>public</span> <span>string</span> Category { <span>get</span>; <span>set</span><span>; }
- </span><span>///</span> <span><summary>
- <span>///</span><span> 图标
- </span><span>///</span> <span></span></summary></span>
- <span>public</span> <span>string</span> IconName { <span>get</span>; <span>set</span><span>; }
- </span><span>///</span> <span><summary>
- <span>///</span><span> 排序
- </span><span>///</span> <span></span></summary></span>
- <span>public</span> <span>int</span> OrderIndex { <span>get</span>; <span>set</span><span>; }
- </span><span>///</span> <span><summary>
- <span>///</span><span> 父节点
- </span><span>///</span> <span></span></summary></span>
- <span>public</span> Guid FatherId { <span>get</span>; <span>set</span><span>; }
- </span><span>public</span> <span>string</span> CreateUser { <span>get</span>; <span>set</span><span>; }
- </span><span>public</span> DateTime CreateTime { <span>get</span>; <span>set</span><span>; }
- </span><span>public</span> <span>string</span> ModifyUser { <span>get</span>; <span>set</span><span>; }
- </span><span>public</span> DateTime? ModifyTime { <span>get</span>; <span>set</span><span>; }
- 1438906181
- </span><span>public</span> Byte[] RowVersion { <span>get</span>; <span>set</span><span>; }
- }
- </span><span>public</span> <span>class</span><span> User
- {
- </span><span>public</span> Guid Id { <span>get</span>; <span>set</span><span>; }
- </span><span>public</span> <span>string</span> UserName { <span>get</span>; <span>set</span><span>; }
- }
- </span><span>public</span> <span>class</span><span> HomeController : Controller
- {
- </span><span>//</span>
- <span>//</span><span> GET: /Home/</span>
- <span>public</span><span> ActionResult Index()
- {
- </span><span>//</span><span>Database.SetInitializer(new DropCreateDatabaseAlways<mycontext>());
- </mycontext></span><span>//</span><span>操作MySql数据库</span>
- <span>var</span> context = <span>new</span> MyContext(<span>"</span><span>DbConMySql</span><span>"</span><span>);
- context.user.Add(</span><span>new</span> User { Id = Guid.NewGuid(), UserName = <span>"</span><span>jackchain</span><span>"</span><span> });
- context.SaveChanges();
- </span><span>var</span> userlist=<span> context.user.ToList();
- </span><span>//</span><span>获取SQLServer数据库内容</span>
- <span>var</span> sqlc = <span>new</span> SQLContext(<span>"</span><span>DefaultDB</span><span>"</span><span>);
- ViewBag.clist </span>=<span> sqlc.category.ToList();
- </span><span>return</span><span> View(userlist);
- }
- }
- }</span></do_category></pluralizingtablenameconvention></mycontext></user></pluralizingtablenameconvention></mycontext>
ok尽情品味吧。EF6的webconfig稍加不同。重点还是webconfig配置
mysql中文乱码问题,请在连接串最后加:Character Set=utf8;