博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORM框架EF
阅读量:5144 次
发布时间:2019-06-13

本文共 2762 字,大约阅读时间需要 9 分钟。

应用程序和数据库采用Tcp协议通讯

ORM框架有: NHibernate ,Dapper ,Mybatis 底层是 ADO.Net

好处:

1.面向对象

2.没有sql减少学习成本,快速开发

3.编译检测会更有用(写sql,字段改了,漏改sql就会异常)

3.有编译检测(改了数据库字段,必须修改,否则报错)?

4.支持延迟特性,缓存

缺陷:

1.sql是自动生成,比较僵化,不确定是否使用索引

2.需要很多反射,对时间和空间有损耗(类,属性,特性)

3.比较复杂的查询不合适,用SQL 或 存储过程,  注意EF查询的性能优化,和SQL性能优化,

大家不要排斥ORM,因为ORM只是一个工具,虽然不能帮你把所有的事儿都做的尽善尽美,但是它有自己的价值,而且它也可以直接用ado.net的

一张应用程序,ORM,ADO.Net 和数据库的图,还有代码层面的

 举一个栗子啊  控制台程序+EF6.几

namespace Ruanmou.EFDBFirst{    class Program    {        static void Main(string[] args)        {            try            {                Console.WriteLine("欢迎来到.Net高级班VIP课程,今晚学习EntityFramework");                //context:数据库映射,一定有个数据库连接,一开始实例化是没有任何数据                //查询个数据之后会做个trace(克隆), 然后你修改任何数据,能识别到并且翻译成sql执行;;数据不是查询的,那么需要去指定状态                using (advanced11EntitiesDbContext context = new advanced11EntitiesDbContext())                {                    context.Database.Log += c => Console.WriteLine($"sql:{c}");                    User user1 = context.Users.Find(5);//即时查询 查询主键ID=5的用户,艾玛,太神奇了  还有这种操作 。。。                    var userList = context.Users.Where(u => u.Id > 0 && u.Name.Length > 2);//延时                    foreach (var item in userList)                    {                        Console.WriteLine(item.Name);                    }                    user1.Name += "test";                    user1.State += 1;                    context.SaveChanges();//把context全部的变化更新到数据库                    User user = context.Users.FirstOrDefault(u => u.Id == 5);//针对数据库查询                    new List
().FirstOrDefault(i => i > 10);//针对内存数据的linq to object User userNew = new User() { Account = "Admin", State = 0, CompanyId = 4, CompanyName = "万达集团", CreateTime = DateTime.Now, CreatorId = 1, Email = "57265177@qq.com", LastLoginTime = null, LastModifierId = 0, LastModifyTime = DateTime.Now, Mobile = "18664876671", Name = "yoyo", Password = "12356789", UserType = 1 }; context.Users.Add(userNew); context.SaveChanges();//自增主键在插入成功后,会自动赋值过去 context.Users.Remove(userNew); context.SaveChanges();//本身就是一个事务 } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); } }}

监视执行SQL,贴下图

以后还能不能愉快的写SQL了。。。

删除比修改费时,还是用软删除好了

转载于:https://www.cnblogs.com/kongsq/p/9784686.html

你可能感兴趣的文章
windows 2003 Server平台Delphi程序不支持直接调用webservice
查看>>
电子书下载:Professional ASP.NET Design Patterns
查看>>
单机版你画我猜--摘自前端网
查看>>
random 产生一个随机数的方法
查看>>
c语言小项目-使用mysql数据库的图书管理系统
查看>>
数字三角形3
查看>>
poj2155(Matrix)(树状数组)
查看>>
Flutter实战视频-移动电商-04.底部导航栏切换效果
查看>>
java网络编程基本知识
查看>>
spring boot 配置文件
查看>>
形态学滤波(3):使用形态学滤波对图像进行边缘及角点检测.
查看>>
mysql 数据库迁移
查看>>
PAT-乙级-1021 个位数统计
查看>>
GreenPlum学习笔记:date_part与extract提取日期时间、时间差
查看>>
PHP 练习1:新闻发布
查看>>
【3】Zookeeper中的角色
查看>>
实训0528
查看>>
AXD 的使用以及源代码说明
查看>>
C++学习笔记第三天:类、虚函数、双冒号
查看>>
将10进制数转换为任意进制数进行显示
查看>>