代码之家  ›  专栏  ›  技术社区  ›  Alex

访问IQueryable后面的DataContext

  •  10
  • Alex  · 技术社区  · 16 年前

    如果是,怎么做?

    1 回复  |  直到 16 年前
        1
  •  14
  •   Joe Albahari    16 年前

    DataContext是特定于linqtosql的,所以您可能在谈论linqtosql查询?如果是这样的话,就没有安全的方法可以做到这一点-您必须求助于黑客,比如使用反射来检索底层DataQuery对象的私有“上下文”字段:

    static DataContext GetContext (IQueryable q)
    {
      if (!q.GetType().FullName.StartsWith ("System.Data.Linq.DataQuery`1")) return null;
      var field = q.GetType().GetField ("context", BindingFlags.NonPublic | BindingFlags.Instance);
      if (field == null) return null;
      return field.GetValue (q) as DataContext;
    }