EF和ADO的增删改查方法总结

EF添加

DbContext db=new DbContext ();

1.db.对象.Add()

db.SaveChanges()

2.SqlParameter[]参数化

db.DataBase.ExecuteSqlCommand("sql语句/存储过程",“参数”)

3.db.Set<对象>.Add()(不用反射的添加)

db.SaveChanges()

4.db.Entry(对象).State=EntityState.Added;

db.SaveChanges()

EF删除

DbContext db=new DbContext ();

1.db.对象.Find(id)(通过查询的对象删除)

db.对象.Remove()

db.SaveChanges()

2.SqlParameter[]参数化

db.DataBase.ExecuteSqlCommand("sql语句/存储过程",“参数”)

sql参数使用@开头

3.db.Set<对象>.Remove(db.对象.Find(id))

db.SaveChanges()  同时执行语句,只要一条不成功,全部不成功类似于事务

4.db.Entry(对象).State=EntityState.Deleted;

db.SaveChanges()

EF修改

1.db.Entry(对象).State=EntityState.Modified

db.SaveChanges()

2.SqlParameter[]参数化

db.DataBase.ExecuteSqlCommand("sql语句/存储过程",“参数”)

sql参数使用@开头

EF查询

DbContext db=new DbContext ();

  1. db.对象.ToList()
  2. SqlParameter[]参数化

db.DataBase.SqlQuery<类型>(“sql语句/存储过程”,”参数”).ToLIst()

存储过程输出参数

存储过程返回的结果必须与类中的字段对应,当多表联查时,创建辅助类,辅助类中包含所需要的字段,名称与数据库一致

ADO

Sql五大对象

SqlConnection 连接对象 连接字符串

SqlCommand  命令对象

SqlDataAdapter  读取对象 不需要开启连接对象,不需要命令对象

查询结果为dataTable集合

定义list集合,for进行每行遍历

循环中每个字段进行赋值

SqlDataReader  读取对象

  1. 性能。

DataSet中的数据完全保存在内存中,所以会占用内存。但是通常情况下DataReader读出的数据实例化以后也是在内存中的,所以两者没有多大区别。但是,当数据量极大的情况下,使用DataSet时,不论是你分页还是不分页,它的效率之低,和SqlDataReader相比都是不可同日而语的,尤其是你在分页情况下,使用DataReader可以只读所需数据,网络流量可以很小,但是DataAdapter还是必须全部读出,网络流量你很难优化,除非你自己去深入控制。

  1. 方便。

DataSet数据保存在内存中,可以用Adapter一次性填充,乍看方便不少,其实不然。由于dataset中的数据都是弱类型的,你用的时候不得不大量使用索引、强制类型转换、类型转换来完成读取任务,麻烦而且易错。从这方便来说,在读取数据时那么一点方便是不可取的。

  1. 离线。

DataSet是离线的,数据读取后可以关闭数据库连接,但是DataReader则必须在使用数据的时候一直连接数据库。现在的项目中大多使用实体(Entity)来保存从DataReader中读取的数据,也能实现离线的目的,虽然麻烦一点,但是后期很方便使用。

DataSet       数据集

Ado参数化

执行速度快

 

ADO调用存储过程

 

 

原文地址:https://www.cnblogs.com/dxx117/p/9885865.html

时间: 2024-07-31 14:19:07

EF和ADO的增删改查方法总结的相关文章

EF学习笔记——通用增删改查方案

http://blog.csdn.net/leftfist/article/details/25005307 我刚接触EF未久,还不知道它有什么强大之处,但看上去,EF提供了一般的增删改查功能.以往用过一些ORM方法,尽管有代码生成器,但代码量总的 来说比较多.这次采用EF,我就想,能不能尽量写出一些通用的方法,以后添加表.实体类,只需做很少的改动,就能拥有基本的增删改查功能呢? 方案如下: 1. 分为几个部分:BLL.DAL.Model.Interface.其中,EF生成的代码放在Model.

赵雅智_使用SQLiteDatabase提供的增删改查方法及事务

知识点详解:http://blog.csdn.net/zhaoyazhi2129/article/details/9026093 MainActivity.java,User.java,BaseDao.java,UserDao.java同上篇 http://blog.csdn.net/zhaoyazhi2129/article/details/28640195 UserDaoImple.java package com.example.android_sqlite.dao.impl; impor

封装HibernateUtil(静态单例模式)和增删改查方法

封装HibernateUtil import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { //定义常量是为了实现单例,不让随便new //ThreadLocal<Session>不是集合,是线程锁,为了单线程安全 private static final ThreadLocal<

PHP历程(封装的增删改查方法)

db.class.php   主要方法 <?php /** * 数据库配置信息 */ define('DB_HOST','127.0.0.1'); //服务器 define('DB_USER','root'); //数据库用户名 define('DB_PASSWORD','123456'); //数据库密码 define('DB_NAME','TEST'); //默认数据库 define('DB_CHARSET','utf8'); //数据库字符集 define('TIMEZONE',"P

通用mapper的增删改查方法 留存 备忘

Mybatis通用Mapper介绍与使用 前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改.这工作量和效率的影响或许就是区别增删改查程序员和真正程序员的屏障.这时,通用Mapper便应运而生-- 什么是通用Mapper 通用Mapper就是为了解决单表增删改查,基于Mybatis的插件.开发人员不需要编写SQL,不需要在DA

Asp.net MVC4 使用EF实现数据库的增删改查

EF的使用 步骤: (1)将EF添加到项目:在Model右击添加新建项 找到ADO.NET实体数据模型,接着... (2)实现数据库的增删改查 查询 (因为在Model中已经添加EF实体了,所以就可以在Controller中进行有关的数据库操作) <<controller>> //数据上下文对象 OrderDBEntities db = new OrderDBEntities(); public ActionResult Index() { //使用SQO(标准查询运算符),查询

EF实现简单的增删改查

1.在项目中添加ADO.NET实体数据模型: 2.接着根据提示配置数据库连接,配置完毕之后项目中生成了大致如下的内容(EF6.x): 其中TestData.tt中的Consumer,Stores是创建时选的数据库中的表 3.在TestDataContext.cs中可以看到生成的实体框架的名字: 4.开始实现增删改查的功能(我是在控制台程序中实现的): 1.实例化该实体框架(我不知道这样叫对不对) EFTestEntities testEntities = new EFTestEntities()

Android学习笔记之SQLite数据库的使用及常用的增删改查方法、无sql语句的DRUD方法汇总

(1)目录结构如下: (2)链接数据库的文件:DBHelper.java要继承SQLiteOpenHelper类 package com.lc.sqlite_demo1.db; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLit

CodeSmith生成的增删改查方法模板源码分享

我是个懒人,喜欢用最少的精力去做更多的事.每每做项目和写一些demo的时候,增删改查都少不了,这些功能写多了就觉得太浪费精力时间,所以就写了个模板,让自己从重复的代码中解放出来. 个人不太会构架,所以模板就是生成一个三层架构,有dal.bll.和model层的项目.对应的数据库是SQL Server 下载链接:https://github.com/lzjluoze/-CodeSmith-/tree/master/NetCms-v1.0 生成演示: 说明: