Entity Framework 学习系列(2) - MySql Database First 开发方式
写在前面
Database First又叫数据库优先的开发方式,是一种比较旧的开发方式,现在已经不再使用这中开发的方式。
当然,对于一些旧项目进行升级,在已经有了数据库的情况下,使用此方式还是十分方便的。
环境
开发环境: win10 家庭版
开发工具:Visual Studio 2019
数据库:MySQL 8.0.17
下载MySQL连接工具
创建Databse First
1.创建控制台
- 选择->新建->项目->windows->控制台应用程序。如图所示:



2.创建数据库
DROP TABLE IF EXISTS `sys_borrow_user`;
CREATE TABLE `sys_borrow_user` (
`user_id` varchar(36) NOT NULL,
`u_id` varchar(255) DEFAULT NULL,
`u_password` varchar(255) DEFAULT NULL,
`gender` varchar(255) DEFAULT NULL,
`user_name` varchar(255) DEFAULT NULL,
`creation_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`status` varchar(255) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.安装 MySQL.Data 和MySQL.Data.Entity
- 选择,工具->NuGet包管理器->管理解决方案的NuGet 程序包

- 搜索MySQL,安装MySql.Data 6.10.9 版本

- 安装MySQL.Data.Entity 6.10.9版本

注意:
在安装 MySql.Data 6.10.9和MySQL.Data.Entity 6.10.9时的版本号要与安装mysql-connector-net-6.10.9.msi的版本号必须要一致。
3.在项目中添加数据实体模型
【1】右击项目,选择添加新项 ,如图所示:

【2】 单击“下一步”按钮,选择"从数据库中生成",如图所示:

【3】新建数据库连接,如图所示:
- 选择MySQL Database。如果没有MySQL Database的选项。可翻看解决mysql的ODBC驱动下载及安装

- 点击下一步,填写配置信息。点击测试测试成功。


【4】在EF中可以直接调用存储过程、视图、函数的,这我们先选择一张表 如图所示:

【5】点击“完成”按钮,最后的展示效果如图:

【6】在代码中添加访问上下文保存到数据库的代码:
- 在APP.config 中找到连接字符串

- 在connectionStrings节点中,添加Password
<add name="mysqldemodbEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;Password=root;persistsecurityinfo=True;database=mysqldemodb"" providerName="System.Data.EntityClient" />
- 最后,在Program类中 编写添加的方法
using System;
namespace myEFDatabaseFirst_01
{
class Program
{
static void Main(string[] args)
{
mysqldemodbEntities db = new mysqldemodbEntities();
sys_borrow_user user = new sys_borrow_user() {
user_id = Guid.NewGuid().ToString().Replace("-",""),
u_id="admin",
u_password="admin",
gender="w",
user_name="超级管理员",
creation_time=DateTime.Now,
status="y"
};
db.sys_borrow_user.Add(user);
db.SaveChanges();
}
}
}
EF在SaveChanges 的时候会遍历上下文容器的每一个代理对象,
然后根据代理对象的State属性生成不同的SQL语句。
再一次性的发送到数据库中执行。
执行完成后,我们可以看到数据库中已经插入一条数据。
如图所示:

产生的问题及解决方案
1.问题1
产生问题:
方法“MySql.Data.Entity.EFMySqlCommand.set_DbConnection(System.Data.Common.DbConnection)”
尝试访问方法“MySql.Data.MySqlClient.MySqlConnection.get_Settings()”失败。产生原因:原来是使用的MySql.Data使用的版本过高,默认使用了最新的8.0.17。
解决方案:将MySql.Data的版本改成6.10.9版本。
2.问题2
产生问题
MySqlException: Access denied for user 'root'@'localhost' (using password: NO)。
产生原因:连接字符串没有密码
解决方案:找到连接字符串后,添加Passwork=root;重新生成解决方案。
3.问题3
- 产生问题
出现闪退或者出现如下图所示问题:

产生原因:都是因为项目中引用的MySql.Data.Entity.EF6版本和安装的mysql-connector-net版本不一致。
解决方案:项目中引用的MySql.Data.Entity.EF6版本和安装的mysql-connector-net版本不一致。改成一致即可
Entity Framework 学习系列(2) - MySql Database First 开发方式的更多相关文章
- Entity Framework 学习系列(3) - MySql Code First 开发方式+数据迁移
目录 # 写在前面 一.开发环境 二.创建项目 三.安装程序包 四.创建模型 五.连接字符串 六.编辑程序 七.数据迁移 写在最后 # 写在前面 这几天,一直都在学习Entity Framework ...
- Entity Framework 学习系列(1) - 认识理解Entity Framework
目录 写在前面 什么是Entity Framework EF的优缺点 1.优点 2.缺点 如何理解ORM EF执行的原理 写在前面 在使用.net mvc 开发的时候.为了高效的开发,我们常常会搭配O ...
- Entity Framework 学习系列(4) - EF 增删改
目录 写在前面 一.开发环境 二.创建项目 三.新增 1.单表新增 2.批量新增 3.多表新增 四.编辑 1.先查询,后编辑 2.创建实体,后编辑 五.删除 写在前面 在上一小节中,学习了如何 通过C ...
- Entity Framework 学习系列(5) - EF 相关查询
目录 写在前面 一.使用Stopwatch 查询执行效率 二.简单查询 1.Linq写法: 2.Lambda表达式写法: 三.条件查询 1.Linq 写法 2.lambda 写法 四.聚合函数 1.L ...
- 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)
七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等) ...
- Entity Framework 学习整理(分播客整理)
MSDN: http://msdn.microsoft.com/en-us/data/aa937723 台湾博客: http://www.dotblogs.com.tw/yc421206/ http: ...
- Entity Framework 学习整理
MSDN: http://msdn.microsoft.com/en-us/data/aa937723 台湾博客: http://www.dotblogs.com.tw/yc421206/ http: ...
- Entity Framework入门系列(1)-扯淡开篇
这是我在Cnblogs上的第一个系列,但愿能坚持下去: 惯例索引 Entity Framework入门系列(1)-开篇兼索引: Entity Framework入门系列(2)-初试Code First ...
- Entity Framework 学习
Entity Framework 学习初级篇1--EF基本概况 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry. ...
随机推荐
- mysql中的where和having的区别
下面以一个例子来具体的讲解: 1. where和having都可以使用的场景 1)select addtime,name from dw_users where addtime> 1500000 ...
- Java数据类型(1)
基本数据类型 A.整型 byte:(8位--1个字节 有符号 以二进制补码表示) 范围:-27~27-1 即 -128~127 short:(16位--2个字节 有符号 以二进制补码表示) 范围:-2 ...
- 《linux就该这么学》课堂笔记19 iSCSI、MariaDB、无人值守安装
1.iSCSI技术介绍 硬盘是计算机硬件设备中重要的组成部分之一,硬盘存储设备读写速度的快慢也会对服务器的整体性能造成影响. 为了进一步提升硬盘存储设备的读写速度和性能,人们一直在努力改进物理硬盘设备 ...
- <h1>~<h6> 标题标签
<h1>~</h6>标题系列标签 解释:h1到h6 中h1标签最大,h6标签最小,逐一递增. 例如: <h1>标签</h1> <h2>标签& ...
- 前端性能优化 http请求的过程及潜在的优化点
CS架构:比如我们的代码开发好,打包成apk,发布到平台,那么最终怎么运行到用户的手机上呢,用户首先需要从相关的应用商城下载这个apk包,并且运行这个 apk 包,那么这个 apk 包就会被解压,最后 ...
- 第07节-开源蓝牙协议BTStack框架代码阅读(下)
上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得). 可以从5个方面来理解BTStack的框架: 1.硬件操作:hci_transport_t BTS ...
- django 解析上传xls文件
1.解析上传数据 class DataUploadAPIView(APIView): # authentication_classes = (JSONWebTokenAuthentication, S ...
- iview form表单数值类型校验「iview自定义form表单校验器」
摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...
- 浅谈HTTPS传输过程
HTTPS是什么 HTTPS不是一个新的协议,可以理解为是一个HTTP协议的加密"版本"(HTTP+SSL(TLS)).那为什么HTTP协议需要加密,不加密会出现什么问题呢?先来了 ...
- django数据请求
目录 数据请求: 静态文件加载 form表单 : 数据请求: request方法: 数据请求: 静态文件加载 静态文件加载: 1.默认情况下所有的html文件都是放在templates文件夹内 静态文 ...