从 Linqkit 获取 SQL 字符串
Get SQL string from Linqkit
我怎样才能 return 来自 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)有关系,但是我不会
让我的头脑围绕它.. :(
string sql = query.ToString();
我怎样才能 return 来自 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)有关系,但是我不会 让我的头脑围绕它.. :(
string sql = query.ToString();