Я использую этот код для получения параметров из моего 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 обнуляется,
Чего мне не хватает?как я могу получить параметры расширяемого запроса?