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

Posted dxx117

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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调用存储过程

 技术分享图片

 

 

以上是关于EF和ADO的增删改查方法总结的主要内容,如果未能解决你的问题,请参考以下文章

c#中怎么实现表的增删改查?

EF的增删改查

EF的增删改查

EF的增删改查(转载)

webapi+EF(增删改查)

Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新,添加]