第十一节: EF的三种模式(一) 之 DBFirst模式(SQLServer和MySQL两套方案)
一. 简介
EF连接数据库有三种模式,分别是DBFirst、ModelFirst、CodeFirst,分别适用于不同的开发场景。
该章节,将主要介绍EF的DBFirst连接SQLServer数据库和MySql数据库两种操作方式
该模式在EF中出现的出现的最早,符合我们的传统开发模式,先设计数据库→然后在代码通过EF与数据库建立映射关系,是EF最早的一种使用方式,使用广泛.以数据库为驱动,生成实体模型,从而驱动整个开发流程。
(1). 优点:操作简单,直接通过可视化界面与数据库表(存储过程、视图等)建立映射关系,省去自己建立表实体的繁琐步骤.
(2). 缺点:与表依赖太强,而且实体是通过T4模板生成的,无法自己根据实际需要来修改,并且一旦数据库修改,就需要重新映射edmx文件了.
(3). 特点:通过T4模板来生成EF上下文和实体模型; 并且可以直接将存储过程或视图映射到生成的上下文中,通过EF上下文直接调用存储过程(详见 EF调用存储过程章节)
二. DBFirst连接SQLServer数据库
1. 选择ADO.NET数据实体模型
2. 选择模型内容:来自数据库的EF设计器
3. 设置服务器及连接字符串
4. 选择数据库的连接并且可以设置配置文件的名称
5. 选择要映射的表、视图、存储过程和函数,完成映射
6. 如果框架是分层的,需要将生产的连接数据库的字符串,复制到主程序的配置文件中
三. DBFirst连接MySQL数据库
事先准备和注意事项:
步骤:
①:安装mysql-connector-net-6.9.9.msi,下载地址:https://dev.mysql.com/downloads/connector/net/ (vs2012-vs2017通用)
②:安装mysql-for-visualstudio-1.2.7.msi,下载地址:https://dev.mysql.com/downloads/windows/visualstudio/ (vs2012-vs2017通用)
③:连接远程服务器需要先在对应数据库服务器上对访问外来的ip和用户名、密码进行授权。
如:GRANT ALL PRIVILEGES ON *.* TO 'root'@'39.88.192.171' IDENTIFIED BY '123456' WITH GRANT OPTION;
表示:ip为39.88.192.171的root用户、密码为123456可以远程访问该数据库服务器
④:安装常规的DBFist模式进行连接即可,但连接界面要选择MySQL对应的界面。
特别注意:在使用该模式的时候,会遇到这么几个烦人的情况,如果该项目中已经引用的了EF的程序集,在可视化界面无法选择EF版本。
但是如果你把引用的程序集删了,可视化界面只能选择EF5.0
所以解决方案:
步骤①:如果引用了EF的程序集,先删掉,然后用可视化界面把EF5.0添加进来,然后在使用Nuget把EF5.0卸载掉。
步骤②:通过nuget一次添加 EF6.x、MySql.Data、MySql.Data.Entity、MySql.Web 程序集的引用.
步骤③:如果是分层开发,不但要向封装层添加引用,还要想主程序层添加EF6.x、MySql.Data、MySql.Data.Entity、MySql.Web 程序集的引用.
步骤④:主程序层配置文件中<entityFramework>→<providers>节点下添加:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
如果是通过Nuget添加的程序集,检查一下是否已经自动添加了,避免重复添加的情况
链接步骤:使用MySQL的客户端界面
代码测试,和SQLServer写法并没有什么两样
1 private static void NewMethod()2 {3 Console.WriteLine("-----------------------1. DBFirst模式连接MySQL数据库-------------------------------");4 using (DbContext db = new mysqldb1Entities())5 {6 //1.1 测试查询 (正常)7 //List<tbb1> tList = db.Set<tbb1>().ToList();8 //foreach (var item in tList)9 //{ 10 // Console.WriteLine("id为:{0},name为:{1}", item.id, item.name); 11 //} 12 13 //1.2 测试一下大数据 (正常) 14 Stopwatch watch = Stopwatch.StartNew(); 15 List<tbb1> tList2 = new List<tbb1>(); 16 for (int i = 0; i < 1000; i++) 17 { 18 tbb1 t = new tbb1(); 19 t.id = Guid.NewGuid().ToString("N"); 20 t.name = "t" + i; 21 tList2.Add(t); 22 } 23 db.BulkInsert(tList2); 24 watch.Stop(); 25 Console.WriteLine("{0}条数据耗时:{1}", 1000, watch.ElapsedMilliseconds); 26 } 27 } 28 #endregion
第十一节: EF的三种模式(一) 之 DBFirst模式(SQLServer和MySQL两套方案)相关推荐
- 第十四节: EF的三种模式(四) 之 原生正宗的 CodeFirst模式的默认约定
一. 简介 1. 正宗的CodeFirst模式是不含有edmx模型,需要手动创建实体.创建EF上下文,然后生成通过代码来自动映射生成数据库. 2. 旨在:忘记SQL.忘记数据库. 3. 三类配置:On ...
- 第七节: EF的三种事务的应用场景和各自注意的问题(SaveChanges、DBContextTransaction、TransactionScope)
一. 什么是事务 我们通俗的理解事务就是一系列操作要么全部成功.要么全部失败(不可能存在部分成功,部分失败的情况). 举一个事务在我们日常生活中的经典例子:两张银行卡(甲.乙),甲向乙转钱,整个过程需 ...
- 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)
一. 简介 我们在前面章节介绍EF基本增删改的时候,曾说过EF的SaveChanges()方法,会一次性的将所有的实体的状态变化统一提交到数据库,那么你是否想过EF的实体会有哪些状态变化呢?什么原因会 ...
- 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法
一. 背景 上一个章节,介绍了EF调用两类SQL语句,主要是借助 ExecuteSqlCommand 和 SqlQuery 两个方法来完成,在本章节主要是复习几类存储过程的写法和对应的EF调用这几类 ...
- 第十三节: EF的三种模式(三) 之 来自数据库的CodeFirst模式
一. 简介 [来自数据库的Code First模式]实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模 ...
- 三种256MB SPIFLASH的高性能模式和软复位学习笔记
三种256MB SPIFLASH的高性能模式和软复位学习笔记 WINBONE CONTINUE READ MODE The Fast Read Dual I/O The Fast Read Quad ...
- 三种最流行的商业模式解析:让顾客感觉占便宜,你才能赚更多钱
商业模式是一切企业的经营根本,在所有商业模式中,盈利模式是祖师爷爷,商业模式其实就是最赚钱的模式.但是真正能够了解甚至能够运用得好的人是非,常少的,期间以傻逼者居多,破产者无数. 以下三种模式,是商业 ...
- 三种方式实现生产者消费者模式
生产者消费者模式 此博文部分借鉴于: https://blog.csdn.net/u011109589/article/details/80519863 https://blog.csdn.net/w ...
- 一,三种基础的数据复用模式 IR,OR,WR
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.数据复用的作用 二.基本参数和卷积模型介绍 二.数据复用方式 1.IR模式 2.OR模式 3.WR模式 总结 前言 ...
最新文章
- “高引用”《牛顿传》重版再出,今晚八点,来直播间“遇见牛顿”!
- Runnable接口介绍(中文文档)
- 音视频技术开发周刊 | 190
- Linux系统下UDP发送和接收广播消息小例子
- leetcode 滑动窗口小结 (三)
- dropzonejs vue 使用_如何在Dropzone上手动触发上传文件事件
- 结对开发:电梯调度(2)
- aspen求理论塔板数_aspen 塔设计
- 面试精讲之面试考点及大厂真题 - 分布式专栏 05 公司使用什么RPC框架,聊聊你理解的RPC原理
- 蓝桥杯 ADV-154 算法提高 质数的后代
- 如何使用高大上的方法调参数
- 关于清除贴图与光域网路径
- 模型预测控制器(MPC)系列: 3.车辆横向MPC控制中的前馈设计
- 微机原理、汇编语言与接口技术(韩晓茹)课后答案
- 请问深圳的准生证在哪办理?
- 在python中、int表示的是数据类型是_Python3基本数据类型之intstr
- JQuery Smart UI 简介(六) — 框架设计【后篇】(数据接口、后台框架)[简介系列完结]...
- 写一个Singleton模式的例子
- 关于libpthread.a静态链接缺少依赖问题
- 学鳄鱼,不做恐龙! 学习鳄鱼的生存之道