应用程序和数据库采用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();//即时查询 查询主键ID=5的用户,艾玛,太神奇了 还有这种操作 。。。
var userList = context.Users.Where(u => u.Id > && u.Name.Length > );//延时
foreach (var item in userList)
{
Console.WriteLine(item.Name);
} user1.Name += "test";
user1.State += ;
context.SaveChanges();//把context全部的变化更新到数据库
User user = context.Users.FirstOrDefault(u => u.Id == );//针对数据库查询
new List<int>().FirstOrDefault(i => i > );//针对内存数据的linq to object User userNew = new User()
{
Account = "Admin",
State = ,
CompanyId = ,
CompanyName = "万达集团",
CreateTime = DateTime.Now,
CreatorId = ,
Email = "57265177@qq.com",
LastLoginTime = null,
LastModifierId = ,
LastModifyTime = DateTime.Now,
Mobile = "",
Name = "yoyo",
Password = "",
UserType =
};
context.Users.Add(userNew);
context.SaveChanges();//自增主键在插入成功后,会自动赋值过去
context.Users.Remove(userNew);
context.SaveChanges();//本身就是一个事务
} }
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}
}
}

监视执行SQL,贴下图

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

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

ORM框架EF的更多相关文章

  1. MVC系列学习(二)-初步了解ORM框架-EF

    1.新建 一个控制台项目 2.添加一个数据项 a.选择数据库 注:数据库中的表如下: b.选择EF版本 c.选择表 3.初步了解EF框架 看到了多了一个以 edmx后缀的文件 在edmx文件上,右击打 ...

  2. ORM框架 EF - code first 的封装

    Code first 是Microsoft Entity Framework中的一种模式,CodeFirst不会有可视化的界面来进行拖动编辑DataBase-Entity,但会以一个类来进行对数据表关 ...

  3. ORM框架 EF - code first 的封装 优化一

    上一节我们讲到对EF(EntityFramework)的初步封装,任何事情都不可能一蹴而就,通过大量的实际项目的实战,也发现了其中的各种问题.在这一章中,我们对上一章的EF_Helper_DG进行优化 ...

  4. 【EF 4】ORM框架及其流行产品之一EF介绍

    导读:跳进了多租户切换数据库的坑,那么就继续走下去吧.在我们的项目中,是运用EF实现对数据库的操作,那么EF其实是.NET系统中,基于ORM框架的一个产品实现.在java那边,则有Hibernate和 ...

  5. 抛弃EF,20分构建一个属于自己的ORM框架

    Poiuyt_cyc 博客园首页新随笔联系订阅管理随笔 - 11  文章 - 0  评论 - 111 抛弃EF,20分构建一个属于自己的ORM框架 相信EF大家都不陌生了,因为数据库表跟程序实体是一一 ...

  6. ASP.NET MVC学习---(一)ORM框架,EF实体数据模型简介

    现如今 对象关系映射(ORM)框架 被大量的使用于企业级应用的开发 为什么要使用ORM? ADO.NET操作数据库不好吗? 我们可以仔细想想 当我们使用ADO.NET操作数据库的时候 我们需要先获取连 ...

  7. EF、Dapper、NHibernate等ORM框架的比较及优缺点

    什么是ORM? ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操 ...

  8. .NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...

    前言 在以前的一篇文章中,为大家分享了<什么是ORM?为什么用ORM?浅析ORM的使用及利弊>.那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper, ...

  9. EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?

    以 EF 为代表的基于 Linq 的 ORM 框架总是 很重. 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数 ...

随机推荐

  1. Spring mvc解决url传递中文参数乱码问题

    在tomcat服务器中,修改server.xml参数,如<Connector URIEncoding="UTF-8" connectionTimeout="2000 ...

  2. 关于CSS布局

    是时候单独列出一篇文章记录CSS布局了. http://www.imooc.com/article/2235  [史上最全Html和CSS布局技巧]

  3. youtube-dl 安装和用法

    以windows为例 下载python2最新版本并安装,选择添加到PATH 下载ffmpeg最新版本并解压,在控制面板->高级系统设置->环境变量->PATH里添加解压之后的bin文 ...

  4. C++中的return和exit区别

    在main函数中,return和exit经常混用,两者的一个区别:return会执行statck unwinding,而exit不会.如果触发了信号,exit也同样不会做stack unwinding ...

  5. EF6学习笔记(六续) 复杂数据模型建表测试

    测试以下几种模型关系: 1对1或0  . 1对多  . 多对多 1 对 1 或 0 如果直接定义两个模型,相互直接增加导航属性,会提示错误,必须为这个对应关系设定主副关系: public class ...

  6. 带参数的main函数以及execl函数的应用

    ---恢复内容开始--- 代码1:(带参main函数) #include<stdio.h> int main(int number, char *parameter[]) { ; prin ...

  7. 2.DI依赖注入

    一:DI Dependency Injection ,依赖注入 is a :是一个,继承. has a:有一个,成员变量,依赖. class B { private A a;   //B类依赖A类 } ...

  8. 优化版小程序canvas,增加失败逻辑,及完善文字

    wxml <view class="shareBox" style="backgound:{{isShow ? '#000' : '#fff'}}" wx ...

  9. javaweb中的乱码问题

    0.为什么需要编码,解码, 无论是图片,文档,声音,在网络IO,磁盘io中都是以字节流的方式存在及传递的,但是我们拿到字节流怎么解析呢?这句话就涉及了编码,解码两个过程,从字符数据转化为字节数据就是编 ...

  10. AndroidStudio制作“我”的界面,设置,修改密码,设置密保和找回密码

    前言 大家好,给大家带来AndroidStudio制作"我"的界面,设置,修改密码,设置密保和找回密码的概述,希望你们喜欢 学习目标 掌握修改密码功能的开发,和实现用户密码的修改: ...