vs2012 entity framework mysql_MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver
在开发的初期个人认为因VS与Sqlserver的配合很默契,即可以方便的实现Code First,又可以使用SqlServer Manager很漂亮的进行建模与变更,也许是个人的使用习惯MS的界面做的很好,乎开源的产品美感上都追不上商用版。 所以个人比较喜欢的开发流程是初次开发以
在开发的初期个人认为因VS与Sqlserver的配合很默契,即可以方便的实现Code First,又可以使用SqlServer Manager很漂亮的进行建模与变更,也许是个人的使用习惯MS的界面做的很好,似乎开源的产品美感上都追不上商用版。
所以个人比较喜欢的开发流程是初次开发以SqlServer Manager进行数据库建模,初步建构业务逻辑;
其次使用Vs的Entity FrameWork 快速的建立起ROM;
最后当开发进行到一定程度时再进行数据库迁移,把SqlServer 转换为MySql。
一、环境:Win 8.1 + Vs2012 + MysqlServer 5.7 + WorkBench 6.0 CE
注意事项:
1. 在某种怪异的情况下Win 8.1 + vs2012 +mysql 5.7 此种搭配是无法使用的,在StackOverFlow中也有很多码友们,包括身边的同事也都有遇到过类似问题,
现象是在Win8.1下安装mysql5.7 时,mysql for vs2012 与 mysql connection net 5.7无法正常安装,即使卸载Mysql也无用,自然在Vs2012中添加Ado.net entity model时未有Mysql conncetion集成到Vs中,但往往在Vs的SqlServer Explore中你可以添加Mysql,但不要试图填写conncetion string,因为那样会让您老人家Vs崩溃。
原因可能是Mysql 在配合MS的新家伙Win 8.1 系统时有Bug存在。
解决办法:此种情况并非每次都会出现,但出现以后很难解决,如果哪位码友知道请赐教;重装系统或者自己运气好,软件自动修复了。
2.使用WorkBench可以很方便的进行数据库迁移,很人性化,自动把SqlServer转为MySql,但某些字段的转换会失败,需要手动修复了。
3.在Vs连接Mysql时不要使用Root,尽量配置以项目为区分的私有帐户,这样可以最大化的实现自定义,配置为允许远程连接的即可。
4.在VS2012创建MySql的Ado.net entity framework时生成的实体全是小写,会使原有建立在SqlServer实体化基础上的代码出现问题,木有关系,把原来的Copy过来即可,Simple.
不过还有一个办法就是使用DbLinq(https://code.google.com/p/dblinq2007/)来替代EF,但不建议使用在正规场合,学习可以,因为其最终版本是2007年,此后再无更新。
二、流程:
数据库迁移:直接使用WorkBench进行数据库从SqlServer 迁移到MySql。
代码迁移:
1. 确保成功安装Connector NET 6.7.4 与 MySQL for Visual Studio 1.0.2
2. 创建MVC3 Web Application,添加引用从NuGet或者MySQL for Visual Studio 1.0.2中获取最新版本的三个DLL:MySql.Data,MySql.Data.Entity,MySql.Web。
3. 如果以上步骤OK的话,当向项目中添加Ado.net entity framework时,New Connection 就可以看到Mysql database选项,否则你就倒霉了,可以参考环境->注意事项;
4. 修改Web.Config,需要增加及修改的示例代码如下:
connectionStrings>
providers>
membership>
providers>
profile>
providers>
roleManager>
providers>
sessionState>
system.web>
DbProviderFactories>
system.data>
5. 到目前为止,正常情况下或者使用CodeFirst或者使用Migration,应该都可以实现MVC3 在MySql下登录和注册模块的功能。:)恭喜已经接近成功了。
6. 之所以不直接使用MVC4是因为MySql 对MVC4的支持并不是太好,时不时会出现很多问题;所以建议使用MVC3按以上步骤调试OK后再往MVC4上转换;所谓转换只是用MVC3的相关权限功能模块来替换掉MVC4的,主要包括AccountController,AccountModels,相关View,Global.asax。
1 protected voidApplication_Start()2 {3 AreaRegistration.RegisterAllAreas();4
5 WebApiConfig.Register(GlobalConfiguration.Configuration);6 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);7 RouteConfig.RegisterRoutes(RouteTable.Routes);8 BundleTable.EnableOptimizations = true;9 BundleConfig.RegisterBundles(BundleTable.Bundles);10 AuthConfig.RegisterAuth();11 BCRMonitor.RegisterGlobalMonitor(Server.MapPath(string.Format("~/photos/")));12
13 //AreaRegistration.RegisterAllAreas();14
15 //Use LocalDB for Entity Framework by default16 //Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");17
18 //RegisterGlobalFilters(GlobalFilters.Filters);19 //RegisterRoutes(RouteTable.Routes);
20 }
7. 可能在上一步骤进行过程中会出现一些问题,耐心调试就OK了。
注意事项:
a. mysql出现异常“ Every derived table must have its own alias” 此种问题在linq to mysql 的过程中也可能会遇到,只是linq to sql本身就是MS为Sqlserver开发的,当涉及到多表综合查询时,对mysql的支持就不太好了,如语句 return GetAll("").Where(x => x.Id == id).Take(1).SingleOrDefault(); 就会引起此类问题,可以换种linq写法规避。
b. 在使用NuGet引用MySql.Data.Entity时注意其版本需要和packages.config,web.config,MySQL for Visual Studio 1.0.2 等中一致,否则也会提示错误:
System.IO.FileNotFoundException: 未能加载文件或程序集"MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"或它的某一个依赖项。系统找不到指定的文件。
c. System.ArgumentException: 不支持关键字: “metadata”。 错误原因可能是connection string provider 未修改成 providerName="MySql.Data.MySqlClient"
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
vs2012 entity framework mysql_MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver相关推荐
- Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架
长久以来,程序员和数据库总是保持着一种微妙的关系,在商用应用程序中,数据库一定是不可或缺的元件,这让程序员一定要为了连接与访问数据库而去学习 SQL 指令,至少对于我而言,我觉得这是一个很不爽的事情. ...
- 【实体对齐·HGCN】Jointly Learning Entity and Relation Representations for Entity Alignment
文章目录 1.动机 2.输入输出 3.相关工作 4.模型 4.1 GCN 4.2 approximating relation representations 4.3 joint entity and ...
- Net Framework 4.0 和.Net Framework 4.0 Client Profile
Net Framework 4.0 和.Net Framework 4.0 Client Profile区别: .Net Framework 4.0毫无疑问就像是.Net Framework 2.0一 ...
- neo4j ogm Class com is not a valid entity class. Please check the entity mapping问题
目前使用Neo4j OGM库的人应该不多了,现在可以直接使用Spring Boot Data Neo4j 简称SDN. 但是使用OGM的时候遇到一个问题:neo4j :: Getting java.l ...
- Entity Framework Core系列教程-25-Entity Framework Core日志
Entity Framework Core日志 我们经常需要在EF Core中记录SQL并更改跟踪信息以进行调试. EF Core日志记录自动与.NET Core的日志记录机制集成.因此,在隐含使用E ...
- Entity Framework - 利用T4 分离 Entity 和 DbContext
通常情况,我们会在项目中新建一个ClassLibrary的EF.Data层,然后在该层中添加一个ADO.NET Entity Data Model的edmx文件.IDE就会利用ADO.NET Enti ...
- Entity Framework DbContext对一个Entity 进行更新。
一.更新实体:EF的DbContext可以实现对一个对象进行更新,而不需要再一次将对象读入内存进行修改,而是采用Attach的方式. Student stud ;// Get student from ...
- zend framework php编码规范,Zend Framework常用校验器详解
本文实例讲述了Zend Framework常用校验器.分享给大家供大家参考,具体如下: Date日期校验器 代码:<?php require_once 'Zend/Validate/Date.p ...
- 【转】解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题...
最新的jenkins打开jenkins robot framework报告会提示如下 Verify that you have JavaScript enabled in your browser. ...
最新文章
- Fresco源码分析之Hierarchy
- Android开发究竟该如何学习,重难点整理
- linux查找maven安装目录_Linux 安装 maven
- Linux Mint 18.2 Sonya 将于 6 月上旬发布公测版本
- freemarker 生成 Java 代码
- Kafka学习-入门
- ExtJs5.0在WebStorm上的使用之入门教程(一)编写第一个网页 HelloExt
- 计算机硬件知识pdf,计算机硬件知识 (很详细)
- MySQL启动关闭服务巨慢,这样解决!
- tp5 空格拆分关键词,多个关键词进行查询
- 智能优化算法应用:基于GWO优化的对称交叉熵图像多阈值分割 - 附代码
- 开源医学图像处理平台NiftyNet介绍
- ati显卡驱动安装linux,在debian下安装ati显卡驱动教程
- 磨刀不误砍柴工(四)-IDEA常用快捷键
- Vulkan_Ray Tracing 09_反射
- 苹果官方首曝iOS 15!这些经典iPhone都要被弃
- pytorch 中 利用自定义函数 get_mask_from_lengths(lengths, max_len)获取每个batch的mask
- Annotation-specified bean name.. for bean class ...
- Pycharm使用小技巧 - 如何设置背景图片
- H5项目2-3手机邮箱导航
热门文章
- C++学习:两个vector对象拼接
- MySQL流浪记(二)—— MySQL介绍及其特性
- 浅谈 Windows API 编程
- CompletableFuture详解~thenApply
- MySQL新建用户,授权,删除用户,修改密码
- 在每天下午五点使用计算机,邮件攻击主要是_每天下午5点使用计算机_apt的攻击目标一般不是...
- html select 文字居中显示图片,html原生select改造箭头及文字左右居中的一种办法...
- java原生的ajax怎么写_原生Ajax代码实现
- c语言高亮字符,C语言必背18个程序+190例--语法高亮
- [Cordova]JS和Native交互实现关键代码(iOS)