Entity Framework 学习系列(2) - MySql Database First 开发方式

时间:2022-09-20 17:09:22

写在前面


Database First又叫数据库优先的开发方式,是一种比较旧的开发方式,现在已经不再使用这中开发的方式。

当然,对于一些旧项目进行升级,在已经有了数据库的情况下,使用此方式还是十分方便的。

环境


  • 开发环境: win10 家庭版

  • 开发工具:Visual Studio 2019

  • 数据库:MySQL 8.0.17

下载MySQL连接工具


  • 首先,需要安装 mysql-for-visualstudio-1.2.8.msi 下载地址

  • .其次,安装mysql-connector-net-6.10.9.msi 下载地址

创建Databse First


1.创建控制台

  • 选择->新建->项目->windows->控制台应用程序。如图所示:

Entity Framework 学习系列(2) - MySql Database First 开发方式

Entity Framework 学习系列(2) - MySql Database First 开发方式

Entity Framework 学习系列(2) - MySql Database First 开发方式

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 程序包

Entity Framework 学习系列(2) - MySql Database First 开发方式

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

Entity Framework 学习系列(2) - MySql Database First 开发方式

  • 安装MySQL.Data.Entity 6.10.9版本

Entity Framework 学习系列(2) - MySql Database First 开发方式

注意:

在安装 MySql.Data 6.10.9MySQL.Data.Entity 6.10.9时的版本号要与安装mysql-connector-net-6.10.9.msi的版本号必须要一致。

3.在项目中添加数据实体模型

【1】右击项目,选择添加新项 ,如图所示:

Entity Framework 学习系列(2) - MySql Database First 开发方式

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

Entity Framework 学习系列(2) - MySql Database First 开发方式

【3】新建数据库连接,如图所示:

Entity Framework 学习系列(2) - MySql Database First 开发方式

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

Entity Framework 学习系列(2) - MySql Database First 开发方式

Entity Framework 学习系列(2) - MySql Database First 开发方式

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

Entity Framework 学习系列(2) - MySql Database First 开发方式

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

Entity Framework 学习系列(2) - MySql Database First 开发方式

【6】在代码中添加访问上下文保存到数据库的代码:

  • 在APP.config 中找到连接字符串

Entity Framework 学习系列(2) - MySql Database First 开发方式

  • connectionStrings节点中,添加Password
<add name="mysqldemodbEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=root;Password=root;persistsecurityinfo=True;database=mysqldemodb&quot;" 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语句。

再一次性的发送到数据库中执行。

执行完成后,我们可以看到数据库中已经插入一条数据。

如图所示:

Entity Framework 学习系列(2) - MySql Database First 开发方式

产生的问题及解决方案


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

  • 产生问题

    出现闪退或者出现如下图所示问题:

Entity Framework 学习系列(2) - MySql Database First 开发方式

  • 产生原因:都是因为项目中引用的MySql.Data.Entity.EF6版本和安装的mysql-connector-net版本不一致。

  • 解决方案:项目中引用的MySql.Data.Entity.EF6版本和安装的mysql-connector-net版本不一致。改成一致即可

Entity Framework 学习系列(2) - MySql Database First 开发方式的更多相关文章

  1. Entity Framework 学习系列&lpar;3&rpar; - MySql Code First 开发方式&plus;数据迁移

    目录 # 写在前面 一.开发环境 二.创建项目 三.安装程序包 四.创建模型 五.连接字符串 六.编辑程序 七.数据迁移 写在最后 # 写在前面 这几天,一直都在学习Entity Framework ...

  2. Entity Framework 学习系列&lpar;1&rpar; - 认识理解Entity Framework

    目录 写在前面 什么是Entity Framework EF的优缺点 1.优点 2.缺点 如何理解ORM EF执行的原理 写在前面 在使用.net mvc 开发的时候.为了高效的开发,我们常常会搭配O ...

  3. Entity Framework 学习系列&lpar;4&rpar; - EF 增删改

    目录 写在前面 一.开发环境 二.创建项目 三.新增 1.单表新增 2.批量新增 3.多表新增 四.编辑 1.先查询,后编辑 2.创建实体,后编辑 五.删除 写在前面 在上一小节中,学习了如何 通过C ...

  4. Entity Framework 学习系列&lpar;5&rpar; - EF 相关查询

    目录 写在前面 一.使用Stopwatch 查询执行效率 二.简单查询 1.Linq写法: 2.Lambda表达式写法: 三.条件查询 1.Linq 写法 2.lambda 写法 四.聚合函数 1.L ...

  5. 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)

    七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等) ...

  6. Entity Framework 学习整理&lpar;分播客整理&rpar;

    MSDN: http://msdn.microsoft.com/en-us/data/aa937723 *博客: http://www.dotblogs.com.tw/yc421206/ http: ...

  7. Entity Framework 学习整理

    MSDN: http://msdn.microsoft.com/en-us/data/aa937723 *博客: http://www.dotblogs.com.tw/yc421206/ http: ...

  8. Entity Framework入门系列&lpar;1&rpar;-扯淡开篇

    这是我在Cnblogs上的第一个系列,但愿能坚持下去: 惯例索引 Entity Framework入门系列(1)-开篇兼索引: Entity Framework入门系列(2)-初试Code First ...

  9. Entity Framework 学习

    Entity Framework 学习初级篇1--EF基本概况 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry. ...

随机推荐

  1. 使用count结合nvl函数时碰到的问题

    count()函数功能:统计表中中某个字段或所有记录个数,字段值为null的不做统计. 手册中解释: COUNT returns the number of rows returned by the ...

  2. pivotx的entry和page内容里的日期格式修改

    欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=63 1. 文章发布时间的确定 如果服务器空间在国内还好说, 如果在国外的话, 文章编辑时 ...

  3. 2016最全的web前端面试题及答案整理

    面试web前端开发,不管是笔试还是面试,都会涉及到各种专业技术问题,今天小编整理了一些常见的web前端面试题及答案,希望对大家有所帮助. 1.常用那几种浏览器测试?有哪些内核(Layout Engin ...

  4. ylbtech-dbs-m-QQ邮箱

    ylbtech-dbs:ylbtech-dbs-m-QQ邮箱 -- =============================================-- DatabaseName:QQ-Em ...

  5. avi文件格式详解【转】

    AVI是音频视频交错(Audio Video Interleaved)的英文缩写,它是Microsoft公司开发的一种符合RIFF文件规范的数字音频与视频文件格式,原先用于Microsoft Vide ...

  6. Java实现敏感词过滤&lpar;转&rpar;

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

  7. 学习windows编程 day5 之 区域裁剪

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  8. SpringBoot与docker

    1.简介 Docker是一个开源的应用容器引擎: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其它使用者开源直接使用这个镜像: 运行中的这个镜像称为容器,容器启 ...

  9. 2018&period;12&period;15 spoj Longest Common Substring II(后缀自动机)

    传送门 后缀自动机基础题. 给出10个串求最长公共子串. 我们对其中一个建一个samsamsam,然后用剩下九个去更新范围即可. 代码: #include<bits/stdc++.h> # ...

  10. Vue2&period;5开发去哪儿网App 第三章笔记 上

    1.  vue 生命周期函数 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 ...