我正在使用以下代码从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 为空,
我想念什么?如何获取可扩展请求的参数?