如何从可扩展查询中获取参数?

时间:2018-10-08 12:51:56

标签: c# entity-framework entity-framework-5

我正在使用以下代码从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 非常有用,它可以获取请求的所有参数。

现在,当我使用AsExpandable()将查询更改为可扩展查询时,代码将崩溃:

  

无法从ExpandableQuery投射到DbQuery

我将 DbQuery 更改为 ExpandableQuery ,但 iqPro 为空,

我想念什么?如何获取可扩展请求的参数?

0 个答案:

没有答案