EF Core 插件 —— ToSql
背景
在使用Entity Framework Core進行開發時,若不使用Logger很難查看到一個查詢的SQL語句,同時也有些開發者因為不了解EF Core哪些Linq可以Translate成SQL,哪些不能而踩坑導致全表查詢的,因此開發了Pomelo.EntityFrameworkCore.Extensions.ToSql。開發者們可以使用這個插件來做查詢的單元測試,或對EF Core進行查詢語句的簡單測試。
該項目在GitHub中開源,也歡迎廣大開發者加入QQ群522943763提出意見與建議。
使用
首先,在項目中引入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語句處,執行.ToUnevaluated()即可返回未能成功執行的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); }運行結果
通過調用.ToSql()和.ToUnevaluated()來查看成功與失敗的翻譯結果,成功的SQL語句和失敗的Linq語句在上圖結果中一目了然。
相關文章:
全球首發免費的MySql for Entity Framework Core
.NET Core 使用Dapper 操作MySQL
在.NET Core中使用MySQL5.7的JSON類型字段
全文索引 - Pomelo.EFCore.MySql
Entity Framework Core 生成跟蹤列
在Apworks數據服務中使用基于Entity Framework Core的倉儲(Repository)實現
Entity Framework Core的貼心:優雅處理帶默認值的數據庫字段
Entity Framework Core 實現MySQL 的TimeStamp/RowVersion 并發控制
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社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的EF Core 插件 —— ToSql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Entity Framework Cor
- 下一篇: DDD理论学习系列(11)-- 工厂