写在前面


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->控制台应用程序。如图所示:

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.9MySQL.Data.Entity 6.10.9时的版本号要与安装mysql-connector-net-6.10.9.msi的版本号必须要一致。

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

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

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

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

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

【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=&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语句。

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

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

如图所示:

产生的问题及解决方案


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版本不一致。改成一致即可

最新文章

  1. bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+二分)
  2. RDIFramework.NET -.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(WebForm版)
  3. 使用百度地图api接口获取公交地图路线和车站
  4. jquery中的cookie
  5. python+redis测试环境搭建
  6. 由chrome剪贴板问题研究到了js模拟鼠标键盘事件
  7. SQL Server SA 密码丢失无法连接数据库怎么办?
  8. 关于struts2拦截器获取页面参数
  9. draw9patch超详细教程
  10. 数据结构练习 00-自测4. Have Fun with Numbers (20)
  11. 第十二章作业 MemoryBugs-master项目优化笔记
  12. Android UI开发详解之ActionBar .
  13. WebStorm JavaScript 开发神器
  14. xss框架(二)基础框架实现
  15. JS正则表达式的test()方法检查汉字
  16. 1.2 sikuli API
  17. 用Maven打包成EAR部署JBoss
  18. java SE Development kit 8 Update 201 (64-bit) 的安装相关
  19. [Python]数据挖掘(1)、梯度下降求解逻辑回归——考核成绩分类
  20. MySQL远程连接问题解决方法

热门文章

  1. intellij idea 新建springboot工程pom.xml报错
  2. 使用apache.tika判断文件类型
  3. Spring-Data-Redis 入门学习
  4. ubuntu16.04深度学习环境配置
  5. 小学四则运算口算练习app---No.6
  6. 【MyEclipse异常】更换工作空间无法启动的异常
  7. Scrapy笔记02- 完整示例
  8. clojure 环境搭建
  9. Asp.Net微信js分享
  10. ASP.NET中IOC容器Autofac(依赖注入DI 控制反转IOC)