当前位置: 首页 > wzjs >正文

首都医科大学网站建设长春网络科技公司排名

首都医科大学网站建设,长春网络科技公司排名,长沙做网站建设价格,音乐网站开发的意义文章目录 前言一、执行查询&#xff08;返回数据&#xff09;1&#xff09; 使用 FromSqlRaw或 FromSqlInterpolated 方法&#xff0c;适用于 DbSet<T>&#xff0c;返回实体集合。2&#xff09;结合 LINQ 查询 二、执行非查询操作&#xff08;增删改&#xff09;1&#x…

文章目录

  • 前言
  • 一、执行查询(返回数据)
    • 1) 使用 FromSqlRaw或 FromSqlInterpolated 方法,适用于 DbSet<T>,返回实体集合。
    • 2)结合 LINQ 查询
  • 二、执行非查询操作(增删改)
    • 1)使用 ExecuteSqlRaw() 或 ExecuteSqlInterpolated() 、ExecuteSqlInterpolatedAsync()方法,返回受影响的行数。
  • 三、调用存储过程
    • 1)执行查询存储过程
    • 2)执行非查询存储过程
  • 四、事务处理
    • 1)确保多个 SQL 操作原子性
  • 五、原生 SQL 查询的注意事项
  • 总结


前言

为什么要写原生SQL语句?

  1. 尽管EF Core已经非常强大,但是任然存在着无法被写成标准EF Core调用方法的SQL语句,少数情况下任然需要写原生SQL。
  2. 存在问题:可能无法跨数据库操作。

一、执行查询(返回数据)

1) 使用 FromSqlRaw或 FromSqlInterpolated 方法,适用于 DbSet,返回实体集合。

示例:查询数据(建议使用FromSqlInterpolated,防止SQL注入

var blogs = context.Blogs.FromSqlRaw("SELECT * FROM Blogs WHERE Rating > {0}", 3).ToList();// 或使用插值字符串(参数化,防注入)
var rating = 3;
var blogsSafe = context.Blogs.FromSqlInterpolated($"SELECT * FROM Blogs WHERE Rating > {rating}").ToList();

2)结合 LINQ 查询

var filteredBlogs = context.Blogs.FromSqlInterpolated("SELECT * FROM Blogs").Where(b => b.Url.Contains("dotnet")).OrderBy(b => b.Rating).ToList();

二、执行非查询操作(增删改)

1)使用 ExecuteSqlRaw() 或 ExecuteSqlInterpolated() 、ExecuteSqlInterpolatedAsync()方法,返回受影响的行数。

示例:更新数据

var rowsAffected = context.Database.ExecuteSqlRaw("UPDATE Blogs SET Rating = 5 WHERE Name LIKE '%EF Core%'");// 参数化示例
var minRating = 3;
var rowsSafe = await context.Database.ExecuteSqlInterpolatedAsync($"DELETE FROM Blogs WHERE Rating < {minRating}");

三、调用存储过程

1)执行查询存储过程

var blogs = context.Blogs.FromSqlRaw("EXEC GetTopRatedBlogs @p0", 5).ToList();

2)执行非查询存储过程

context.Database.ExecuteSqlRaw("EXEC ArchiveOldBlogs @p0", DateTime.Now.AddYears(-1));

四、事务处理

1)确保多个 SQL 操作原子性

using (var transaction = context.Database.BeginTransaction())
{try{context.Database.ExecuteSqlRaw("UPDATE Blogs SET Rating = 5 WHERE BlogId = 1");context.Database.ExecuteSqlRaw("DELETE FROM Blogs WHERE BlogId = 2");transaction.Commit();}catch{transaction.Rollback();}
}

五、原生 SQL 查询的注意事项

  1. 参数化查询:始终使用参数化输入(如 {0} 或插值语法)避免 SQL 注入。
  2. 列匹配:查询返回的列名必须与实体属性名匹配,或通过 AS 别名映射。
  3. 跟踪变更:默认跟踪实体变更,若无需跟踪可加 .AsNoTracking()。
  4. 数据库兼容性:SQL 语法需适配具体数据库(如 SQL Server 和 SQLite 的差异)。
  5. 性能:仅在必要时使用原生 SQL,优先选择 LINQ 以保证类型安全和可维护性。

总结

EF Core 的原生 SQL 方法适用于特定场景,但需谨慎使用以确保安全性和可维护性。优先考虑 LINQ,复杂场景再选择原生 SQL。

http://www.dtcms.com/wzjs/298242.html

相关文章:

  • 织梦网站安装教程视频最新疫情19个城市封城
  • 自己的网站做app什么是口碑营销
  • 什么网站可以做自考试题最新热点新闻
  • 做ghost系统的网站有哪些淮安网站seo
  • 教外国人做中国菜网站山东seo费用多少
  • 网站开发报价单模板软文范例300字
  • 程序员自己做网站怎么赚钱网站推广应该怎么做?
  • 现在收废品做哪个网站好郑州seo服务
  • 哈尔滨建站系统报价合肥网站优化搜索
  • 怎么建立一个网站?指数基金定投技巧
  • 空包网网站怎么做的体育热点新闻
  • 接做室内效果图的网站谷歌浏览器下载app
  • wordpress标签筛选seo搜索引擎优化论文
  • 做网站公司青岛上海关键词优化按天计费
  • wordpress页面如何设置新窗口百度手机端排名如何优化
  • 网站版面布局结构seo实战密码电子书
  • 四川网站备案咨询网优化大师win10能用吗
  • 政府网站字体流量网站
  • 网站 运营工作如何做优化大师破解版app
  • 网站建设里怎么写文章北京seo网站推广
  • 网站推广的主要方法西安百度竞价开户
  • 搭建网站成本小程序开发公司前十名
  • 国内服务器做网站要备案深圳网站建设运营
  • 合肥网站建设套餐百度霸屏推广
  • 做网站对外贸有什么用武汉建站优化厂家
  • 网站建设和运行管理办法企业营销策划书
  • 深圳哪家网站建设好seo1888百度推广登录平台app
  • 海报模板网址正规seo一般多少钱
  • 做微视频的网站北京网站快速排名优化
  • 萧山网页设计seo优化的方法