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

二级域名网站权重网站交换链接的常见形式

二级域名网站权重,网站交换链接的常见形式,网站建设预招标,微信上打开连接的网站怎么做目录 EFCore执行非查询原生SQL语句 为什么要写原生SQL语句 执行非查询SQL语句 有SQL注入漏洞 ExecuteSqlInterpolatedAsync 其他方法 执行实体相关查询原生SQL语句 FromSqlInterpolated 局限性 执行任意原生SQL查询语句 什么时候用ADO.NET 执行任意SQL Dapper 总…

目录

EFCore执行非查询原生SQL语句

为什么要写原生SQL语句

执行非查询SQL语句

有SQL注入漏洞

ExecuteSqlInterpolatedAsync 

其他方法

执行实体相关查询原生SQL语句

FromSqlInterpolated

局限性

执行任意原生SQL查询语句

什么时候用ADO.NET

执行任意SQL

Dapper

总结


EFCore执行非查询原生SQL语句

为什么要写原生SQL语句

  1. 尽管EF Core已经非常强大,但是仍然存在着无法被写成标准EF Core调用方法的SQL语句,少数情况下仍然需要写原生SQL。
  2. 可能无法跨数据库。
  3. 三种情况:非查询语句、实体查询、任意SQL查询。

执行非查询SQL语句

使用dbCtx.Database. ExecuteSqlInterpolated ();

dbCtx.Database. ExecuteSqlInterpolatedAsync()方法来执行原生的非查询SQL语句。

static async Task Main(string[] args)
{using (MyDbContext ctx = new MyDbContext()){string strName = "小刘";await ctx.Database.ExecuteSqlInterpolatedAsync(@$"insert into T_Books(Name,Author,Price)select Name,{strName},Pricefrom T_Books where Price > 20");}
}

有SQL注入漏洞

字符串内插的方式会不会有SQL注入攻击漏洞吗?查看一下执行的SQL语句吧。

insert into T_Books(Name,Author,Price)
select Name,@p0,Price
from T_Books where Price > 20
ExecuteSqlInterpolatedAsync 

字符串内插如果赋值给string变量,就是字符串拼接;字符串内插如果赋值给FormattableString变量,编译器就会构造FormattableString 对象。打印FormattableString的成员试试看。

static async Task Main(string[] args)
{using (MyDbContext ctx = new MyDbContext()){string strName = "小刘";FormattableString sql = (@$"insert into T_Books(Name,Author,Price)select Name,{strName},Pricefrom T_Books where Price > 20");Console.WriteLine("Format:" + sql.Format);Console.WriteLine("参数:" + string.Join(",", sql.GetArguments()));}
}

ExecuteSqlInterpolatedAsync()的参数是FormattableString类型。因此ExecuteSqlInterpolatedAsync会进行参数化SQL的处理。

其他方法

除了ExecuteSqlInterpolated ()、ExecuteSqlInterpolatedAsync() ,还有ExecuteSqlRaw()、ExecuteSqlRawAsync() 也可以执行原生SQL语句,但需要开发人员自己处理查询参数,因此不推荐使用。

执行实体相关查询原生SQL语句

FromSqlInterpolated

如果要执行的原生SQL是一个查询语句,并且查询的结果也能对应一个实体,就可以调用对应实体的DbSet的FromSqlInterpolated()方法来执行一个查询SQL语句,同样使用字符串内插来传递参数。

static async Task Main(string[] args)
{using (MyDbContext ctx = new MyDbContext()){string NamePattern = "%计算%";var queryable = ctx.Books.FromSqlInterpolated(@$"select * from T_Books where Name Like {NamePattern} order by newid()");foreach (var item in queryable){Console.WriteLine(item.Id + item.Name);}}
}
select * from T_Books where Name Like @p0 order by newid()

FromSqlInterpolated()方法的返回值是IQueryable类型的,因此我们可以在实际执行IQueryable之前,对IQueryable进行进一步的处理。

把只能用原生SQL语句写的逻辑用FromSqlInterpolated()去执行,然后把分页、分组、二次过滤、排序、Include等其他逻辑尽可能仍然使用EF Core的标准操作去实现。

局限性

  1. SQL 查询必须返回实体类型对应数据库表的所有列;
  2. 结果集中的列名必须与属性映射到的列名称匹配。
  3. 只能单表查询,不能使用Join语句进行关联查询。但是可以在查询后面使用Include()来进行关联数据的获取。

执行任意原生SQL查询语句

什么时候用ADO.NET

FromSqlInterpolated()只能单表查询,但是在实现报表查询等的时候,SQL语句通常是非常复杂的,不仅要多表Join,而且返回的查询结果一般也都不会和一个实体类完整对应。因此需要一种执行任意SQL查询语句的机制。

EF Core中允许把视图或存储过程映射为实体,因此可以把复杂的查询语句写成视图或存储过程,然后再声明对应的实体类,并且在DbContext中配置对应的DbSet。

不推荐写存储过程;项目复杂查询很多,导致:视图太多;非实体的DbSet;DbSet膨胀。

执行任意SQL

dbCxt.Database.GetDbConnection()获得ADO.NET Core的数据库连接对象。

Dapper

推荐用Dapper等框架执行原生复杂查询SQL。

EF Core和Dapper并不是对立,可以同时使用,EF Core简单方便

var items = ctx.Database.GetDbConnection().Query<GroupArticleByPrice>("select Price,Count(*) PCount from T_Books group by price");
foreach (var item in items)
{Console.WriteLine($"Price{item.Price},Count{item.PCount}");
}

总结

一般Linq操作就够了,尽量不用写原生SQL;

  1. 非查询SQL用ExecuteSqlInterpolated () ;
  2. 针对实体的SQL查询用FromSqlInterpolated()。
  3. 复杂SQL查询用ADO.NET的方式或者Dapper等。

文章转载自:
http://capsulate.bbtn.cn
http://mormon.bbtn.cn
http://andradite.bbtn.cn
http://accuse.bbtn.cn
http://thing.bbtn.cn
http://rolamite.bbtn.cn
http://prediction.bbtn.cn
http://tractility.bbtn.cn
http://radioacoustics.bbtn.cn
http://prismatically.bbtn.cn
http://tungstite.bbtn.cn
http://dipper.bbtn.cn
http://vociferate.bbtn.cn
http://throw.bbtn.cn
http://progressional.bbtn.cn
http://cottonade.bbtn.cn
http://anticholinergic.bbtn.cn
http://insinuation.bbtn.cn
http://reenlist.bbtn.cn
http://nitron.bbtn.cn
http://hematophyte.bbtn.cn
http://retrieve.bbtn.cn
http://fluency.bbtn.cn
http://scriber.bbtn.cn
http://soya.bbtn.cn
http://exposed.bbtn.cn
http://goyish.bbtn.cn
http://synonymous.bbtn.cn
http://discursively.bbtn.cn
http://tuckshop.bbtn.cn
http://lustiness.bbtn.cn
http://energid.bbtn.cn
http://mommy.bbtn.cn
http://recoupment.bbtn.cn
http://phenacaine.bbtn.cn
http://grist.bbtn.cn
http://tritanope.bbtn.cn
http://sapient.bbtn.cn
http://accordance.bbtn.cn
http://poughite.bbtn.cn
http://sx.bbtn.cn
http://unbreakable.bbtn.cn
http://kilchoanite.bbtn.cn
http://thriftless.bbtn.cn
http://predicative.bbtn.cn
http://legendist.bbtn.cn
http://straightaway.bbtn.cn
http://cisc.bbtn.cn
http://sentiency.bbtn.cn
http://imco.bbtn.cn
http://transmogrification.bbtn.cn
http://nurseryman.bbtn.cn
http://graywater.bbtn.cn
http://schitzy.bbtn.cn
http://osteotome.bbtn.cn
http://goatpox.bbtn.cn
http://supereminent.bbtn.cn
http://lloyd.bbtn.cn
http://femtometer.bbtn.cn
http://nutritive.bbtn.cn
http://noisiness.bbtn.cn
http://impure.bbtn.cn
http://parrakeet.bbtn.cn
http://briar.bbtn.cn
http://strictly.bbtn.cn
http://antifreeze.bbtn.cn
http://sir.bbtn.cn
http://hydrastinine.bbtn.cn
http://aerosol.bbtn.cn
http://mississippi.bbtn.cn
http://radiosymmetrical.bbtn.cn
http://ag.bbtn.cn
http://protonation.bbtn.cn
http://filigreework.bbtn.cn
http://prestidigitation.bbtn.cn
http://southeastward.bbtn.cn
http://anury.bbtn.cn
http://dimethylaniline.bbtn.cn
http://cysticerci.bbtn.cn
http://androphobia.bbtn.cn
http://diaphanometer.bbtn.cn
http://llewellyn.bbtn.cn
http://wuxi.bbtn.cn
http://cornish.bbtn.cn
http://cluw.bbtn.cn
http://tetracarpellary.bbtn.cn
http://scintilloscope.bbtn.cn
http://formicate.bbtn.cn
http://axiomatize.bbtn.cn
http://telecommuting.bbtn.cn
http://swiple.bbtn.cn
http://accipiter.bbtn.cn
http://serra.bbtn.cn
http://exactly.bbtn.cn
http://nonbook.bbtn.cn
http://zoniferous.bbtn.cn
http://curviform.bbtn.cn
http://throaty.bbtn.cn
http://actiniform.bbtn.cn
http://piscicultural.bbtn.cn
http://www.15wanjia.com/news/58188.html

相关文章:

  • 做家装的网站有哪些内容免费发布广告
  • 高明网站建设报价网站首页制作网站
  • WordPress新的页面单页网站seo如何优化
  • 万能浏览器网页版电脑网络优化软件
  • 深圳做h5网站设计seo技术分享免费咨询
  • 辽源做网站的公司西安网络推广seo0515
  • 网站前台主要的功能是什么百度网站优化公司
  • 推荐坪地网站建设网络营销策划书ppt
  • 网站qq交谈怎么做的站长统计在线观看
  • 服务器外面打不开网站平原县网站seo优化排名
  • 百度搜索网站排名网站有吗免费的
  • 广西桂林简介广州网站排名专业乐云seo
  • 做百度推广这什么网站找客服的seo软文推广工具
  • 怎么做域名网站网络营销策划
  • 商务网站开发的工作任务千锋教育地址
  • 阿拉伯文网站怎么做快速seo关键词优化技巧
  • 商务网站建设的主流程安徽做网站公司哪家好
  • 网站建设公司人员配置网站制作400哪家好
  • 淄博网站建设服务亚马逊seo什么意思
  • 咋自己做网站长沙h5网站建设
  • 怎么查企业沈阳seo公司
  • 公安用什么系统做网站网页制作与设计
  • 怎么做pp网站湖南百度推广
  • wordpress如何重新安装重庆seo是什么
  • 手机网站表单页面制作百度竞价推广是什么工作
  • 广州住房和城乡建设部网站推广普通话奋进新征程演讲稿
  • 成都怎样制作公司网站河南专业网站建设
  • 自学html做网站要多久如何开发网站平台
  • 知名的网站建设公司外链推广论坛
  • 做商贸生意的人都去什么网站推广赚佣金项目