EF执行SQL语句和存储过程

EF虽然使用对象化的方式避免了我们写SQL,但是对于部分SQL,例如需要复杂的查询、执行插入和删除等可以操作,直接执行SQL可以减少减少性能上的损失。

使用EF执行SQL可以通过ExecuteSqlCommand()和SqlQuery()两个方法。这两个方法适用场景如下:

  1. ExecuteSqlCommand()不返回执行的结果,只返回受影响的行数,所以适用于数据库修改,数据创建,更新和删除等操作;
  2. SqlQuery()则会返回查询到的结果,并将结果保存在数据实体中;
  • 使用ExecuteSqlCommand()示例:
 1 string sql = @"INSERT INTO region(RegionID, RegionDescription) VALUES(@regionId, @regionDescription)";
 2                 var result = context.Database.ExecuteSqlCommand(sql,
 3                     new MySqlParameter("@regionId", 5),
 4                     new MySqlParameter("@regionDescription", "Center"));
 5                 if (result >= 1)
 6                 {
 7                     Console.WriteLine("插入新数据成功");
 8                 }
 9                 else
10                 {
11                     Console.WriteLine("插入数据失败");
12                 }
13                 string sql = @"DELETE FROM region WHERE RegionID = @regionId";
14                 var result = context.Database.ExecuteSqlCommand(sql,
15                     new MySqlParameter("@regionId", 5));
16                 if (result >= 1)
17                 {
18                     Console.WriteLine("删除数据成功");
19                 }
20                 else
21                 {
22                     Console.WriteLine("删除数据失败");
23                 }
  • 使用SqlQuery<T>()示例:
1 string sql = @"SELECT RegionID, RegionDescription FROM region";
2                 var result = context.Database.SqlQuery<Region>(sql);
3                 foreach (Region region in result)
4                 {
5                     Console.WriteLine("Region = {0}, RegionDescription = {1}",
6                         region.RegionId, region.RegionDescription);
7                 }
  • 使用DbSet<T>的SqlQuery()方法执行查询
1 var result = context.Database.SqlQuery<Region>(sql);
  • 使用EF执行存储过程

也可以使用ExecuteSqlCommand()和SqlQuery<T>()执行存储过程,只需要将示例中的SQL语句换成存储过程的名称即可

时间: 2024-12-25 00:51:22

EF执行SQL语句和存储过程的相关文章

MVC EF 执行SQL语句

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 闲着没事,看了一篇关于LINQ和SQL对比的文章,网友们也是积极发言,有人说LINQ简单,维护了程序的可读性,易用性.有人说:LINQ的执行本质其实就是SQL,再好的LINQ也需要转化为SQL后才能和数据库交互,LINQ效率低. 在此,表达下观点:本人支持后者,也就是SQL. 那么,在EF中,我们怎样执行SQL呢? 在此,先贴出几张图,如下: 1. 2.

EF执行SQL语句 结果和直接在Sqlserver中执行结果不一致

先说问题 直接执行sql的结果 var result = base.Context.Customers.SqlQuery(sql); sql 语句是打断点取得的,连接的也同是一个数据库 ,但是结果不一致 用SqlDataAdapter把数据取到DataSet 中也是正确的 所以可以排除sql 语句有问题 虽然找出了一个解决办法,但是在这里加一个DataSet太丑陋了,虽然规避了问题 然后换了一个EF直接执行sql的方式 var result = base.Context.Database.Sql

测试JdbcTemplate执行SQL语句和存储过程

我在项目中需要使用到oracle的语句片段和存储过程.下面就是我的测试案例: public class DbTest extends BaseTestCase { @Resource JdbcUtil jdbcUtil; @org.junit.Test public void testSQL(){ String sql="declare "+ " v_objid int; "+ " begin " + " v_objid:=1; &qu

Asp.Net MVC EF之一:使用Database类在EF框架中执行Sql语句

h4 { padding: 8px 5px; background-color: #32c5d2 } .start-box,.body { padding: 10px } .tit { font-size: 14px; font-weight: bold } div.content { line-height: 150%; font-weight: bold } .content { border: dashed 1px #999999; padding: 10px; background: #

EF中执行sql语句

EF原理 EF 会自动把 Where().OrderBy().Select()等这些编译成"表达式树(Expression Tree)",然后会把表达式树翻译成 SQL 语句去执行.(编译原理,AST)因此不是"把数据都取到内存中,然后使用集合的方法进行数据过滤",因此性能不会低.但是如果这个操作不能被翻译成 SQL 语句,则或者报错,或者被放到内存中操作,性能就会非常低 跟踪EF的查询Sql语句: DbContext 有一个 Database 属性,其中的 Log

SSIS高级转换任务—执行SQL语句

下面的随笔中将讲述SSIS中的高级转换任务,和老旧的SQL Server 2000 DTS相比,我们会发现现在以前的dark-arrow,data-pump任务没有了.在转换任务中隐藏ActiveX脚本和嵌入连接字符的方法也被去除了.在将Package指向不同的数据库的时候也不会忘记修改转换对象,在修改对象连接的时候也一样.现在新建全局连接.转换任务可以被更加容易的管理,使用便捷界面可以浏览任务的设计界面并修改属性. 在使用SSIS package的时候,有些时候需要避免一些过度依赖的情况.没有

EF中使用SQL语句或存储过程

EF中使用SQL语句或存储过程或视图 1.无参数查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList(); 2.有参查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes where [email protected] ",new SqlParameter

在EF中执行SQL语句

你可能要问,我用EF不就为了避免写SQL吗?如果要写SQL我不如直接用ADO.NET得了.话虽然这么说没错,可有些时候使用EF操作数据还是有一些不方便,例如让你根据条件删除一组记录,如果按照正常的流程来走,你就得先把这些数据查出来,然后再一条一条地删除它们,这样不仅麻烦而且性能也比较低.这种情况下SQL就显示出它的威力了. 而使用EF执行SQL又比ADO.NET方便,特别是在执行查询语句的时候,EF会把查询到的数据自动保存到数据实体中,省去了使用DataReader的麻烦.同时查询出来的数据还会

EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery

一.目前EF Core的版本为V2.1 相比较EF Core v1.0 目前已经增加了不少功能. EF Core除了常用的增删改模型操作,Sql语句在不少项目中是不能避免的. 在EF Core中上下文,可以返货DbConnection ,执行sql语句.这是最底层的操作方式,代码写起来还是挺多的. 初次之外 EF Core中还支持 FromSql,ExecuteSqlCommand 连个方法,用于更方便的执行Sql语句. 另外,目前版本的EF Core 不支持SqlQuery,但是我们可以自己扩