使用EntityFramework6连接MySQL
本文内容纲要:
-使用EntityFramework6连接MySQL
-安装MySQL
-创建数据库
-使用EntityFramework6连接MySQL数据库
-一、添加EF包
-二、通过向导来连接MySQL数据库
-三、分析生成的代码
-使用EF进行增删改查
使用EntityFramework6连接MySQL
不是微软的亲儿子这待遇就是不一样,其中的坑可真实不少,第一次连MySQL足足折腾了我大半天。
废话不多说直接开始。
安装MySQL
从官网上下载最新版,下载好以后直接安装就可以了。最新版的MySQL已经包含了所有开发需要的功能(包括MySQL连接器),相信会用MySQL,怎么装应该都没有问题,这里就不啰嗦了。不过有一点值得提醒的是,在选择要安装的内容时记得将所有功能都装上,之后出现问题多半都是哪个模块漏装了。
安装好之后,在开始菜单中找到MySQLWorkbench,这是MySQL自带的一款管理工具,个人也比较喜欢,一直用的也都是这个。以前要单独安装,不过现在自带了。
创建数据库
为了演示我先创建一个叫test的数据库,并创建一张学生表Student
使用EntityFramework6连接MySQL数据库
准备工作都就绪了,接下来我创建一个项目来演示如何连接MySQL数据库。
考虑到有些同学可能并不使用.NETMVC,所以这里我们创建一个控制台项目来演示。别担心,在.NETMVC中,配置的过程都是完全一样的。
一、添加EF包
打开NuGet包管理工具后,点击浏览,然后搜索EntityFramework。先按装EntityFramework,再安装MySQL.Data.Entity.
通过NuGet来安装EF可以帮我们省去很多麻烦的配置环节。
二、通过向导来连接MySQL数据库
按照习惯,我先在项目中建立了一个Modules文件夹,用于保存所有生成的数据模型文件。之后右击,新建项。
之后选择ADO.NET实体数据模型,我取名为DBModel。
选择来自数据库的CodeFirst模型,点击下一步。
PS:EF有三种方式来运行。
第一种是通过EF设计器,类似于传统的数据库设计器,通过画出的数据结构图来生成对应的类(数据模型)和数据库,不过这种方式好像在EF7中将被废弃掉了,所以不推荐使用。
第二种是通过先创建好数据库,然后根据数据库来生成对应的数据模型,这种方式称之为数据库优先DBFrist。
第三种是先手工编写好需要的数据模型,然后根据数据模型逆向生成数据库,这种方式称之为代码优先CodeFirst。
**注意:**不管你是习惯数据库优先还是代码优先。都请先用数据库优先来生成代码,这样会省去很多中间配置的环节。
之后选择新建连接
输入你的数据库地址(默认是localhost)和账号、密码,勾选保存密码,在数据库名称中选择你对应的数据库,在这我的是test。完成后点击测试连接,提示没有问题后点击确定。这一步如果出错一般都是数据库配置的问题,跟EF没有关系。
选择,是包含敏感信息
选择你需要的数据库和表,在这我选择的是我之前在数据库中创建的Student表。确定所生产对象名称的单复数形式这个选项随意。最开始我也没理解到它的作用,其实就是英语的单复数,就是在名词后面加S和不加S。
点击完成之后如果你幸运的话,到这一步就成功了。不过事情一般没那么简单,傲娇的EF就提示我什么主键值为空。
我第一次弄的时候这东西折磨了我大半天,什么办法都试尽了,好在最后在StackOverflow上找到了办法。
打开MySQL管理器,执行
use`test`;/*你的数据库名*/setglobaloptimizer_switch='derived_merge=OFF';
执行完之后再按照上面的步骤从头一遍应该就可以了,如果还是不行就重启一下MySQL服务,再执行一下上面的代码,再试试。
三、分析生成的代码
回到解决方案资源管理器,这时我们的项目下就应当多了两个文件,一个是DBModel数据库上下文(到时都是通过它来操作数据库),一个是student数据模型。
打开DBModel.cs
student数据模型中对数据做了些描述(你不用代码优先CodeFirst这些一般都不用管)
使用EF进行增删改查
到这一步EF连接MySQL就已经完成了,之后你就可以像操作SQLServer一样使用EF操作MySQL了。不过我还是演示下如何使用EF操作数据库。
classProgram{staticvoidMain(string[]args){using(vardb=newDBModel()){varstudent=(fromtindb.students//查询张三wheret.name=="张三"selectt).First();Console.WriteLine("张三的年龄是:"+student.age);//输出:张三的年龄是:15db.students.Remove(student);//删除张三//db.Entry(student).State=System.Data.Entity.EntityState.Deleted;//或者这样删除张三db.students.Add(newstudent{name="小明",age=21});//向数据库中添加小明student=(fromtindb.students//查询李四wheret.name=="李四"selectt).First();student.age=999;//更改李四的年龄//db.Database.ExecuteSqlCommand("deletefromtest.studentwheretrue");//执行普通的SQL,删除全部数据//varresult=db.Database.SqlQuery<student>("select*fromtest.student");//执行普通的SQL,查询所有学生db.SaveChanges();//保存结果}Console.Read();}}
目录:EntityFramework6快速入门教程
下一节:使用EntityFramework6完成增删查改和事务
本文内容总结:使用EntityFramework6连接MySQL,安装MySQL,创建数据库,使用EntityFramework6连接MySQL数据库,一、添加EF包,二、通过向导来连接MySQL数据库,三、分析生成的代码,使用EF进行增删改查,
原文链接:https://www.cnblogs.com/wujingtao/p/5399950.html