EF和ADO的增删改查方法总结
Posted dxx117
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF和ADO的增删改查方法总结相关的知识,希望对你有一定的参考价值。
l 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()
l 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()
l EF修改
1.db.Entry(对象).State=EntityState.Modified
db.SaveChanges()
2.SqlParameter[]参数化
db.DataBase.ExecuteSqlCommand("sql语句/存储过程",“参数”)
sql参数使用@开头
l EF查询
DbContext db=new DbContext ();
- db.对象.ToList()
- SqlParameter[]参数化
db.DataBase.SqlQuery<类型>(“sql语句/存储过程”,”参数”).ToLIst()
存储过程输出参数
存储过程返回的结果必须与类中的字段对应,当多表联查时,创建辅助类,辅助类中包含所需要的字段,名称与数据库一致
l ADO
Sql五大对象
SqlConnection 连接对象 连接字符串
SqlCommand 命令对象
SqlDataAdapter 读取对象 不需要开启连接对象,不需要命令对象
查询结果为dataTable集合
定义list集合,for进行每行遍历
循环中每个字段进行赋值
SqlDataReader 读取对象
- 性能。
DataSet中的数据完全保存在内存中,所以会占用内存。但是通常情况下DataReader读出的数据实例化以后也是在内存中的,所以两者没有多大区别。但是,当数据量极大的情况下,使用DataSet时,不论是你分页还是不分页,它的效率之低,和SqlDataReader相比都是不可同日而语的,尤其是你在分页情况下,使用DataReader可以只读所需数据,网络流量可以很小,但是DataAdapter还是必须全部读出,网络流量你很难优化,除非你自己去深入控制。
- 方便。
DataSet数据保存在内存中,可以用Adapter一次性填充,乍看方便不少,其实不然。由于dataset中的数据都是弱类型的,你用的时候不得不大量使用索引、强制类型转换、类型转换来完成读取任务,麻烦而且易错。从这方便来说,在读取数据时那么一点方便是不可取的。
- 离线。
DataSet是离线的,数据读取后可以关闭数据库连接,但是DataReader则必须在使用数据的时候一直连接数据库。现在的项目中大多使用实体(Entity)来保存从DataReader中读取的数据,也能实现离线的目的,虽然麻烦一点,但是后期很方便使用。
DataSet 数据集
l Ado参数化
执行速度快
l ADO调用存储过程
以上是关于EF和ADO的增删改查方法总结的主要内容,如果未能解决你的问题,请参考以下文章