Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get SQL string from Linqkit

how can I return the SQL from a LinqKit.ExpandableQuery<T>?
I'm using the code from stevefenton.co.uk but it seems to fail at

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>;
        }

with the internalQueryField being null.

It has something to do with the inheritance tree (LinqKit + Linq), but I can't get my head around it.. :(

like image 955
grmbl Avatar asked Jun 16 '26 22:06

grmbl


1 Answers

string sql = query.ToString();
like image 183
Ashkan Mobayen Khiabani Avatar answered Jun 19 '26 12:06

Ashkan Mobayen Khiabani



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!