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  读取对象

 SqlDataReader  读取对象  和  DataSet       数据集 的比较

  1. 性能。

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

  1. 方便。

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

  1. 离线。

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

Ado参数化

 

执行速度快

 

ADO调用存储过程

 

 

猜你喜欢

转载自www.cnblogs.com/dxx117/p/9885865.html