http://www.cnblogs.com/wujingtao/p/5399950.html

不是微软的亲儿子这待遇就是不一样,其中的坑可真实不少,第一次连MySQL足足折腾了我大半天。

废话不多说直接开始。

安装MySQL

从官网上下载最新版,下载好以后直接安装就可以了。最新版的MySQL已经包含了所有开发需要的功能(包括MySQL连接器),相信会用MySQL,怎么装应该都没有问题,这里就不啰嗦了。不过有一点值得提醒的是,在选择要安装的内容时记得将所有功能都装上,之后出现问题多半都是哪个模块漏装了。

安装好之后,在开始菜单中找到MySQL Workbench,这是MySQL自带的一款管理工具,个人也比较喜欢,一直用的也都是这个。以前要单独安装,不过现在自带了。

创建数据库

为了演示我先创建一个叫test的数据库,并创建一张学生表Student

使用Entity Framework6 连接MySQL数据库

准备工作都就绪了,接下来我创建一个项目来演示如何连接MySQL数据库。

考虑到有些同学可能并不使用.NET MVC,所以这里我们创建一个控制台项目来演示。别担心,在.NET MVC中,配置的过程都是完全一样的。

一、添加EF包

打开NuGet包管理工具后,点击浏览,然后搜索EntityFramework。先按装EntityFramework,再安装MySQL.Data.Entity.

通过NuGet来安装EF可以帮我们省去很多麻烦的配置环节。

二、通过向导来连接MySQL数据库

按照习惯,我先在项目中建立了一个Modules文件夹,用于保存所有生成的数据模型文件。之后右击,新建项。

之后选择ADO.NET实体数据模型,我取名为DBModel。

选择来自数据库的CodeFirst模型,点击下一步。

PS:EF有三种方式来运行。

第一种是通过EF设计器,类似于传统的数据库设计器,通过画出的数据结构图来生成对应的类(数据模型)和数据库,不过这种方式好像在EF7中将被废弃掉了,所以不推荐使用。

第二种是通过先创建好数据库,然后根据数据库来生成对应的数据模型,这种方式称之为数据库优先DB Frist。

第三种是先手工编写好需要的数据模型,然后根据数据模型逆向生成数据库,这种方式称之为代码优先 Code First。

注意:
不管你是习惯数据库优先还是代码优先。都请先用数据库优先来生成代码,这样会省去很多中间配置的环节。

之后选择新建连接

输入你的数据库地址(默认是localhost)和账号、密码,勾选保存密码,在数据库名称中选择你对应的数据库,在这我的是test。完成后点击测试连接,提示没有问题后点击确定。这一步如果出错一般都是数据库配置的问题,跟EF没有关系。

选择,是包含敏感信息

选择你需要的数据库和表,在这我选择的是我之前在数据库中创建的Student表。确定所生产对象名称的单复数形式这个选项随意。最开始我也没理解到它的作用,其实就是英语的单复数,就是在名词后面加S和不加S。

点击完成之后如果你幸运的话,到这一步就成功了。不过事情一般没那么简单,傲娇的EF就提示我什么主键值为空。

我第一次弄的时候这东西折磨了我大半天,什么办法都试尽了,好在最后在Stack Overflow上找到了办法。

打开MySQL管理器,执行

  1. use `test`; /*你的数据库名*/
  2. set global optimizer_switch='derived_merge=OFF';

执行完之后再按照上面的步骤从头一遍应该就可以了,如果还是不行就重启一下MySQL服务,再执行一下上面的代码,再试试。

三、分析生成的代码

回到解决方案资源管理器,这时我们的项目下就应当多了两个文件,一个是DBModel数据库上下文(到时都是通过它来操作数据库),一个是student数据模型。

打开DBModel.cs

student数据模型中对数据做了些描述(你不用代码优先CodeFirst这些一般都不用管)

使用EF进行增删改查

到这一步EF连接MySQL就已经完成了,之后你就可以像操作SQL Server一样使用EF操作MySQL了。不过我还是演示下如何使用EF操作数据库。

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. using (var db = new DBModel())
  6. {
  7. var student = (from t in db.students //查询张三
  8. where t.name == "张三"
  9. select t).First();
  10. Console.WriteLine("张三的年龄是:" + student.age); //输出:张三的年龄是:15
  11. db.students.Remove(student); //删除张三
  12. //db.Entry(student).State = System.Data.Entity.EntityState.Deleted; //或者这样删除张三
  13. db.students.Add(new student { name = "小明", age = 21 }); //向数据库中添加小明
  14. student = (from t in db.students //查询李四
  15. where t.name == "李四"
  16. select t).First();
  17. student.age = 999; //更改李四的年龄
  18. //db.Database.ExecuteSqlCommand("delete from test.student where true"); //执行普通的SQL,删除全部数据
  19. //var result = db.Database.SqlQuery<student>("select * from test.student"); //执行普通的SQL,查询所有学生
  20. db.SaveChanges(); //保存结果
  21. }
  22. Console.Read();
  23. }
  24. }

目录:EntityFramework6 快速入门教程

下一节:使用EntityFramework6完成增删查改和事务

用EntityFramework6连接MySQL【转】的更多相关文章

  1. 使用EntityFramework6连接MySQL

    使用EntityFramework6连接MySQL 不是微软的亲儿子这待遇就是不一样,其中的坑可真实不少,第一次连MySQL足足折腾了我大半天. 废话不多说直接开始. 安装MySQL 从官网上下载最新 ...

  2. 使用EntityFramework6连接MySql数据库(db first方式)

    准备工具: VS2013.MySQL For VisualStudio 1.1.4.Connector/Net 6.8.3(百度网盘里) 程序包管理器执行命令: Install-Package Ent ...

  3. 使用EntityFramework6连接MySql数据库(code first方式)

    demo托管地址:http://git.oschina.net/uustudy/ASP.NET-CodeFirst-MySQL-Demo.git 之前的是db first(地址:http://www. ...

  4. 使用EntityFramework6连接MySql数据库

    准备工具: VS2013.MySQL For VisualStudio 1.1.4.Connector/Net 6.8.3(百度网盘里) 程序包管理器执行命令: Install-Package Ent ...

  5. 使用EntityFramework6连接MySql数据库-db first方式

    准备工具: VS2013.MySQL For VisualStudio 1.1.4.Connector/Net 6.8.3 程序包管理器执行命令: Install-Package EntityFram ...

  6. EF 连接MySql

    使用EntityFramework6连接MySql数据库(db first方式) http://www.cnblogs.com/24la/archive/2014/04/03/ef6-mysql.ht ...

  7. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  8. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

  9. Node.js Express连接mysql完整的登陆注册系统(windows)

    windows学习环境: node 版本: v0.10.35 express版本:4.10.0 mysql版本:5.6.21-log 第一部分:安装node .Express(win8系统 需要&qu ...

随机推荐

  1. centos yum 安装php mysql

    1 安装php7 查看 centos 版本 # cat /etc/centos-release 删除之前的 php 版本 # yum remove php* php-common rpm 安装 Php ...

  2. 【2017 4 24 - B】 组合数

    [题目描述] 输入格式: 一行一个正整数n 输出格式: 一行一个数f(n)对1000000007取余的值 [分析] 就是乱搞?? 就是问根到叶子有多少条路径嘛. 然后路径可以π.1.1.π...这样表 ...

  3. BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)

    题目链接 BZOJ 当然哪都能交(都比在BZOJ交好),比如UOJ #58 //67376kb 27280ms //树上莫队+带修改莫队 模板题 #include <cmath> #inc ...

  4. VM 操作系统实例化(基于 KVM 的虚拟化研究及应用--崔泽永(2011))的论文笔记

    一.VM操作系统实例化 1.建立虚拟磁盘镜像 虚拟磁盘镜像在逻辑上是提供给虚拟机使用的硬盘, 在物理上可以是 L inux系 统内一普通镜像文件, 也可以是真实的物理磁盘或分区. 本方案设计中将虚拟机 ...

  5. Codeforces Round #368 (Div. 2) E. Garlands 二维树状数组 暴力

    E. Garlands 题目连接: http://www.codeforces.com/contest/707/problem/E Description Like all children, Ale ...

  6. 找不到包含 OwinStartupAttribute 的程序集

    配置一个 MVC 项目时 遇到的  vs 2013 解决办法:在 webconfig 中 <appSettings> <add key="owin:AutomaticApp ...

  7. Flex Viewer(二) 体系结构

    一.概述 在上一篇文章<深入浅出Flex Viewer (一)——概述>中,笔者对Flex Viewer用于构建以地图为中心的富客户端(RIA)应用的原型的功能和价值做了简要地介绍.在本文 ...

  8. Revit Family API 添加参数与尺寸标注

    使用FamilyManager其他的与普通添加参数与标注没区别. [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Man ...

  9. 更好使用jQuery的8个小技巧

    更好地使用jQuery,这里总结了8个小技巧. 1.DOM遍历是昂贵的,将变量缓存起来. //不推荐var h = $('#ele').height();$('#ele').css('height', ...

  10. CLR如何加载程序集以及程序集版本策略

    在项目的配置文件Web.config中,会看到<runtime>节点,以及包含在其中的<assemblyBinding>节点,这显然与程序集有关,这些节点到底何时被用到呢? 在 ...