从 Linqkit 获取 SQL 字符串

本文关键字:字符串 SQL 获取 Linqkit | 更新日期: 2023-09-27 18:36:26

如何从LinqKit.ExpandableQuery<T>返回 SQL?
我正在使用 stevefenton.co.uk 的代码,但它似乎在

private static System.Data.Entity.Core.Objects.ObjectQuery<T> GetQueryFromQueryable<T>(IQueryable<T> query)
        {
            var internalQueryField = query.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Where(f => f.Name.Equals("_internalQuery")).FirstOrDefault();
            var internalQuery = internalQueryField.GetValue(query);
            var objectQueryField = internalQuery.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Where(f => f.Name.Equals("_objectQuery")).FirstOrDefault();
            return objectQueryField.GetValue(internalQuery) as System.Data.Entity.Core.Objects.ObjectQuery<T>;
        }

internalQueryField为空。

它与继承树(LinqKit + Linq)有关,但我不能让我的头脑围绕它..:(

从 Linqkit 获取 SQL 字符串

string sql = query.ToString();