在EF中直接运行SQL命令
2014-11-29 14:49
225 查看
一、在 EF第一个版本(.NET 3.5 SP1)中
通过将ObjectContext.Connection转换为EntityConnection,再把 EntityConnection.StoreConnection转换为SqlConnection。
有了这个SqlConnection,我们再创建 SqlCommand便能顺利运行SQL命令了。
例如:
EntityConnection entityConnection = (EntityConnection)ctx.Connection;
DbConnection storeConnection = entityConnection.StoreConnection;
DbCommand cmd = storeConnection.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "[PRO_USER_DIGITALCARD_CHECK]";
....
二、在EF4(.NET 4)中
ObjectContext.ExecuteStoreCommand(...) 执行某一并无返回集的SQL 命令,例如ADD,UPDATE,DELETE操作ObjectContext.ExecuteStoreQuery<T>(...) 执行某一个查询,并可以将返回集转换为某一对象
using (var ctx = new MyObjectContext()) { int result = ctx.ExecuteStoreCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1"); }
using (var ctx = new MyObjectContext()) { IEnumerable<PersonView> peopleViews = ctx.ExecuteStoreQuery<PersonView>("SELECT PersonID, Name FROM Person"); } public class PersonView { public int PersonID { get; set; } public string Name { get; set; } }
三、在EF4.1中
DbContext将ObjectContext做了包装,DbContext.Database就是对应于数据库端信息的封装
执行SQL命令也从Database类型开始
using (var ctx = new MyDbContext()) { int result = ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1"); }
using (var ctx = new MyDbContext()) { IEnumerable<PersonView> peopleViews = ctx.SqlQuery<PersonView>("SELECT PersonID, Name FROM Person").ToList(); } public class PersonView { public int PersonID { get; set; } public string Name { get; set; } }
示例:
1.无参数查询: List<UserInfo> list = db.Database.SqlQuery<UserInfo>("select* from UserInfo ").ToList(); 2、有参查询 List<UserInfo> list = db.Database.SqlQuery<UserInfo>("select* from UserInfoes where id=@ID ",new SqlParameter("@ID",id)).ToList(); 3.EF 执行存储过程或delete 删除语句 SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@ID",id) }; int result = db.Database.ExecuteSqlCommand("delete UserInfoes where id=@ID", paras); int result = db.Database.ExecuteSqlCommand("sp_Userinfos_deleteByID @ID", paras);
参考文章:
http://www.cnblogs.com/chengxiaohui/articles/2092001.htmlhttp://www.360doc.com/content/14/0709/00/5054188_393081769.shtml
相关文章推荐
- C# 在EF中直接运行SQL命令
- Entity Framework 小技巧二 —— 如何在EF中直接运行SQL命令
- 实用笔记-EF中直接运行SQL命令
- DA中直接运行SQL命令,并返回影响行数
- 直接通过mysql命令运行sql脚本
- Entity Framework(EF) 直接执行数据库命令并返回 DataTable 数据参数化 SQL 语句
- entity framework(EF) 直接执行数据库命令并返回DataTable 参数化sql语句
- DA中直接运行SQL命令,并返回影响行数
- LINQ TO SQL:直接执行查询和命令
- SQL Server中存储过程比直接运行SQL语句慢的原因
- SQL Server中存储过程比直接运行SQL语句慢的原因
- mysql学习点滴,附正确的crashcourse教材sql脚本,网上的脚本不完善,不能直接运行
- SQL Server中存储过程比直接运行SQL语句慢的原因
- 一个查选优化的例子,转--SQL Server中存储过程比直接运行SQL语句慢的原因
- mkdir是windows的一个命令,也就是在命令行可以直接运行的命令。如果你在命令行中可以直接执行"python" 那么就可以替换执行
- Sqlplus联机文档学习-Sqlplus运行的3种命令和SQL缓冲的功能!
- Linux下设置mysql命令可以直接运行
- SQL Server中存储过程比直接运行SQL语句慢的原因
- 解决如何从msys直接运行git命令最简单方法
- 直接执行查询和命令(LINQ TO SQL)