通过EntityFramework来操作MySQL数据库
自己首次用到了EF,为了利人利己,故将自己今天学的记录下来。
这个项目要用到的工具是VS2015、MySQL5.7.12 。
首先我们先建一个解决方案,里面建两个项目分别是Silentdoer.Main和Silentdoer.EfProj
其中Silentdoer.Main是控制台项目,用于执行操作MySQL的代码。
而Silentdoer.EfProj是类库项目,里面将添加ADO.NET 实体数据模型。
我们现在在Silentdoer.EfProj中添加一个ADO.NET 实体数据模型,这个模型对象是数据库和C#程序沟通的“桥梁”,数据表的数据可以通过这个“桥梁”直接在C#中操作(用LINQ会很方便),类似操作List<T>对象一样。新建过程如图:

其中DbForTest是我的MySQL数据仓库(Schema)的名字。(顺便提一下,Windows下MySQL默认Schema和数据表是不区分大小写的,最好将它设置为区分大小写,否则生成的类名字不合规范,当然我这次也没设置)。
设置方式:将lower_case_table_names设置为2
点击添加后来到第二步:

这里选择第一个就好。
点击下一步来到第三步:

这一步要注意,这里右上角新建的连接能且只能定位到一个Schema,一个Model不能同时访问两个数据仓库。这也是我前面为什么用DbForTestModel作为名字的原因(DbForTest是Schema/数据仓库名称),
新建连接时注意选择正确的数据源。
下面的连接字符串是否包含敏感数据(如密码),我为了偷懒直接选了是(如果这个是供服务端用选是一般也没关系),如果选择否的话,则当要用这个Model对象操作数据表之前需要先执行(schMdl是Model对象):
var schMdl = new DbForTestEntities(); schMdl.Database.Connection.ConnectionString="server=XX;database=XX;uid=XX;pwd=XX";(这种方式我感觉执行的时候貌似挺慢的。也可能是第一次执行会变慢,之后则速度正常。)
下面的将 App.Config 中的连接设置另存为(S):要勾上,否则不能更改下面TextBox中的内容,且生成的Model的类名固定为Entities,这明显没DbForTestEntities直观,且当你这里有多个Schema的Model时也许有啥问题也说不定(个人没测试过)。
接着点击下一步:

这里不知道是不是MySQL不够新的原因,我只能用EF5.0,等以后升级了EF6.x后再看看需不需要更新这篇文章。
点击下一步:

上面选择要在Model中“生成”的数据表,可以只选择一部分数据表,如图dttest和student。
这一步注意勾上:确定所生成对象名称的单复数形式(S) ,比如数据表student在C#程序中会以students的名字来显示,如果以student来代表数据表不能很好的直观的让人理解。
后面两个我个人自己选了默认的勾上(我还没用过它们)。
下面的模型命名空间我在弄好之后测了蛮久都不知道它有什么用,个人暂且认为这个参数没啥用,故我统一都用EfNamespace作为值。
点击完成后DbForTestModel就生成完毕。
生成后Silentdoer.EfProj项目如图(直观的可以看到多了DbForTestModel.edmx、packages.config,App.config中多了一些数据。其实项目中还多出了其它数据):

Model展示图如:

这里的dttest和student都可以改名,方式是对其右键-重构-重命名,然后改成新的名字即可(这里貌似部分大小写[也许和MySQL大小写敏感配置有关],不能从dttest改为Dttest,若要该要先改成其它的名字再改)。
接下来就在Silentdoer.Main项目中以DbForTestModel来操作dttest和student两个数据表中的数据吧:
首先在Silentdoer.Main中添加Silentdoer.EfProj项目的引用,然后在Main函数中写如下代码:
var dbMdl = new DbForTestEntities();
dbMdl.student.Add(new student {ClassName = "yibanna", Name = "woailuo"});
dbMdl.SaveChanges();
但是我这边还不能执行,系统提示要添加一些引用,所幸我的Resharper有提示,我自己按Resharper的提示然后就自动添加了,添加后Silentdoer.Main中也会出现:
packages.config文件,且App.config中也会加入EntityFramework相关的数据。
这时候运行异常提示没有配置连接字符串,我们需要从Silentdoer.EfProj的App.config中拷贝出<connectionStrings>...</connectionStrings>块添加到Silentdoer.Main中的App.config文件的对应位置中。
至此大功告成。运行后student表中会有一条新纪录。
通过EntityFramework来操作MySQL数据库的更多相关文章
- Code First操作Mysql数据库
前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...
- PHP操作MySQL数据库5个步骤
PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- 转 用C API 操作MySQL数据库
用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...
- PHP操作mysql数据库:[2]查询数据听语音
本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料 Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言 ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- shell脚本操作mysql数据库
shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql -hhostname -Pport -uusername -pp ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- 使用node js 操作 Mysql 数据库
使用node js 操作 Mysql 数据库 http://www.nodejs.org/ //node js 数据库操作 MySQL //使用https://github.com/felixge/n ...
随机推荐
- 1.Servlet介绍 和 HTTP协议简述
1. Servlet是什么? sun公司制订的一种用来扩展web服务器功能的组件规范. (1)扩展web服务器功能 注: 早期的web服务器只能处理静态资源的请求,即需要事先将 html文件准备好,并 ...
- 【Python】三个例子教你写代码
这篇文章包括用Python编写的斐波那契数列,三位数的水仙花数和百钱买百鸡的基础代码: (一)斐波那契数列: ''' def hanshu(n): n_1 = 1 n_2 = 1 m = n sumn ...
- linux服务器上Apache配置多域名
一, 打开httpd.conf 二 找到如下三个位置配置如下 DocumentRoot "/data" #以下这个配置是紧挨着的,有两个 <Directory "/ ...
- sqli-libs
这是抄袭你们 铃兰师姐总结的,尽管她很不情愿. (现在只是第八关,相信她会努力的,一定会做完,我也会随时在这个上面更新的,这个是在本地搭建的,想要这个的可以找你们铃兰师姐要啊!!!) less-1: ...
- .net 通用面试题
1. private. protected. public. internal 修饰符的访问权限. private : 私有成员, 在类的内部才可以访问 public : 公共成员,完全公开,没有访问 ...
- 浅谈IM(InstantMessaging) 即时通讯/实时传讯【理论篇】
一.IM简要概述 IM InstantMessaging(即时通讯,实时传讯)的缩写是IM,互动百科大致解释是一种可以让使用者在网络上建立某种私人聊天(chatroom)的实时通讯服务. 大部 ...
- Unity3d_GUI_2__(能量条的学习)
这和上一篇有点跳跃,不过GUI有官方文档,而且也可以查看编辑器自带的脚本文档,多看看API,多操作操作,肯定能熟练的.所以这篇我就介绍下一点小技巧,大佬就略过这篇了,不适合大佬,会被你们教育的. 1. ...
- 垃圾陷阱洛谷dp
题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺. 卡门想把垃圾堆起来,等到 ...
- CCF-201604-1-折点计数
问题描述 试题编号: 201604-1 试题名称: 折点计数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数表示一个商店连续n天的销售量.如果某天之前销售量在增长 ...
- php简单实现发微博动态
首先,肯定是注册成为开发者新浪微博开放平台 选择网站应用,填写一些基本信息 填完后在'我的应用'中,会看到刚创建的应用信息,我们只是简单的测试一下,所以其他复杂的注册信息都不用填写,有这些就够了 很重 ...