Доступ к DataContext за IQueryable

Можно ли получить доступ к объекту DataContext за IQueryable?

Если да, то как?

Ответ 1

DataContext специфичен для LINQ to SQL, поэтому, предположительно, вы говорите о запросах LINQ to SQL? Если это так, нет безопасного способа сделать это - вам нужно прибегнуть к взлому, например, используя рефлексию для извлечения частного контекстного поля базового объекта 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;
}