Как получить параметры из расширяемого запроса? - PullRequest
0 голосов
/ 08 октября 2018

Я использую этот код для получения параметров из моего EF-запроса:

var dbQuery = (DbQuery<TheObject>)myQuery;
            var iqPro = dbQuery.GetType().GetProperty("InternalQuery", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public);
            var iq = iqPro.GetValue(dbQuery, null);
            var oqProp = iq.GetType().GetProperty("ObjectQuery", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public);
            var objectQuery = (ObjectQuery<TheObject>)oqProp.GetValue(iq, null);
            var sqlString = objectQuery.ToTraceString();
            object[] parameters = new object[objectQuery.Parameters.Count];
            int i = 0;
            foreach (var objectParam in objectQuery.Parameters)
            {
                // the parameters I need
            }

Это отлично работает для обычного EF-запроса myQuery , он получает все параметрыrequest.

Теперь, когда я изменяю запрос на расширяемый с помощью AsExpandable (), код падает с:

Невозможно преобразовать из ExpandableQuery в DbQuery

Я изменил DbQuery на ExpandableQuery , но iqPro обнуляется,

Чего мне не хватает?как я могу получить параметры расширяемого запроса?

...