问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mvc3和mvc4共存引起的问题

发布网友 发布时间:2022-04-12 08:56

我来回答

2个回答

懂视网 时间:2022-04-12 13:17

在开发的初期个人认为因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,需要增加及修改的示例代码如下:


 
 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 

  5. 到目前为止,正常情况下或者使用CodeFirst或者使用Migration,应该都可以实现MVC3 在MySql下登录和注册模块的功能。:)恭喜已经接近成功了。

  6. 之所以不直接使用MVC4是因为MySql 对MVC4的支持并不是太好,时不时会出现很多问题;所以建议使用MVC3按以上步骤调试OK后再往MVC4上转换;所谓转换只是用MVC3的相关权限功能模块来替换掉MVC4的,主要包括AccountController,AccountModels,相关View,Global.asax。

 1 protected void Application_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 default
16  // 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"

热心网友 时间:2022-04-12 10:25

尽量不要让vs2010与vs2012进行共存,你可以尝试使用vs2012来同时开发mvc3及4的项目,不会有干扰。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 英语话题作文,急~~好的加分 英语话题作文怎样写? 求英语话题作文~急急急~! 英语话题作文 话题英语作文 急用!!! 以(我想在英语课上学习什么)为题的英语作文怎么写 话题作文(英语) 影响可转债涨跌的因素有那些 人力资源四级实操过了,但理论没过,那理论既是那部分?可以补考一科吗?是交一半报考费吗?懂的有劳了 人力资源管理四级理论和技能考试都没过能补考吗?费用是多少呢? 考人力资源证书要一级一级考吗?从四级开始? 和平精英在玩训练营为什么突然就匹配去了 《和平精英》的单人训练场在哪里? MVC2 MVC3 MVC4,MVC5的区别,EF的各个版本的区别;LocalDB是个啥 什么是定期存单的到期默认转存? 工作调动怎么办理调动手续? 工作调动程序及手续 乡镇政府各个部门的工作调动什么流程? 教师跨县调动工作需要经过哪些程序 调动工作要走什么程序? 我是化装新手,请问大家如何画眼线呢? 高分大学英语话题作文 新手怎样画眼线? 【英语。话题作文】求帮助。 求一篇英语话题作文! 以提高英语为话题的英语作文 英语话题作文(以名人该不该有隐私为话题) 请以a talk with 为话题 英语作文 加SSD 装系统详细过程 进京证从哪里办理 变压器的计算公式是什么? 变压器功率怎么计算 求变压器功率计算公式 mvc4和mvc3有啥区别 *眼镜取不下来怎么办.用网上那种食指和中指的零接触法.左眼花了好久取下来,右眼已经用这个方法 上山容易下山难,犹如戴美瞳,戴的话好戴用那个棒子就行了虽然我没尝试过,我看视频教程的时候就是戴的 请问80年代的老烟标有没有收藏价值 湖南香烟有多少 相思乌香烟在九十年代时烟又好又便宜,为什么现又难买到品质又差? 名烟品牌有哪些