EF Core 插件 —— ToSql
背景
在使用Entity Framework Core進(jìn)行開發(fā)時,若不使用Logger很難查看到一個查詢的SQL語句,同時也有些開發(fā)者因?yàn)椴涣私釫F Core哪些Linq可以Translate成SQL,哪些不能而踩坑導(dǎo)致全表查詢的,因此開發(fā)了Pomelo.EntityFrameworkCore.Extensions.ToSql。開發(fā)者們可以使用這個插件來做查詢的單元測試,或?qū)F Core進(jìn)行查詢語句的簡單測試。
該項(xiàng)目在GitHub中開源,也歡迎廣大開發(fā)者加入QQ群522943763提出意見與建議。
使用
首先,在項(xiàng)目中引入Pomelo.EntityFrameworkCore.Extensions.ToSql 2.0.0-preview3-10000。
在欲輸出SQL語句的類中引用命名空間Microsoft.EntityFrameworkCore,并在欲輸出SQL語句位置添加.ToSql()。
var MySqlContext = new MySqlContext(); Console.WriteLine(MySqlContext.Models.Where(x => x.Title.Contains("Pomelo")).Where(x => new[] { 2, 3, 5, 7, 11 }.Contains(x.Count)).Where(x => x.Title.Skip(3).Take(4).ToString() == "Hello").ToSql());在欲輸出未能翻譯的Linq語句處,執(zhí)行.ToUnevaluated()即可返回未能成功執(zhí)行的Linq代碼:
var MySqlContext = new MySqlContext();var unevaluated = MySqlContext.Models.Where(x => x.Title.Contains("Pomelo")).Where(x => new[] { 2, 3, 5, 7, 11 }.Contains(x.Count)).Where(x => x.Title.Skip(3).Take(4).ToString() == "Hello").ToUnevaluated();foreach (var x in unevaluated) {Console.WriteLine(x); }運(yùn)行結(jié)果
通過調(diào)用.ToSql()和.ToUnevaluated()來查看成功與失敗的翻譯結(jié)果,成功的SQL語句和失敗的Linq語句在上圖結(jié)果中一目了然。
相關(guān)文章:
全球首發(fā)免費(fèi)的MySql for Entity Framework Core
.NET Core 使用Dapper 操作MySQL
在.NET Core中使用MySQL5.7的JSON類型字段
全文索引 - Pomelo.EFCore.MySql
Entity Framework Core 生成跟蹤列
在Apworks數(shù)據(jù)服務(wù)中使用基于Entity Framework Core的倉儲(Repository)實(shí)現(xiàn)
Entity Framework Core的貼心:優(yōu)雅處理帶默認(rèn)值的數(shù)據(jù)庫字段
Entity Framework Core 實(shí)現(xiàn)MySQL 的TimeStamp/RowVersion 并發(fā)控制
Entity Framework Core 軟刪除與查詢過濾器
Entity Framework Core 命名約定
全文索引 - Pomelo.EFCore.MySql
Entity Framework Core 批處理語句
原文地址:http://www.1234.sh/post/full-text-index-in-pomelo-efcore-mysql
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的EF Core 插件 —— ToSql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Entity Framework Cor
- 下一篇: DDD理论学习系列(11)-- 工厂