ObjectDisposedException after update to v1.8.0
See original GitHub issueI’ve been using v1.7.6 and my context calling looks like:
using (var db = new DataContext(context.ProviderName, context.ConnectionString))
{
IEnumerable<someType> result = db.Where(<some search lambda>).AsEnumerable();
return result;
}
After update to v1.8.0 I have an exception thrown:
System.ObjectDisposedException IDataContext is disposed Object name: ‘DataConnection’.
System.ObjectDisposedException: IDataContext is disposed Object name: ‘DataConnection’. at LinqToDB.Data.DataConnection.ThrowOnDisposed() at LinqToDB.Data.DataConnection.LinqToDB.IDataContext.SetQuery(IQueryContext queryContext) at LinqToDB.Linq.Query
1.SetCommand(IDataContext dataContext, Expression expr, Object[] parameters, Int32 idx, Boolean clearQueryHints) at LinqToDB.Linq.Query
1.<RunQuery>d__11.MoveNext() at LinqToDB.Linq.Query1.<Map>d__69.MoveNext() at System.Linq.Lookup
2.Create[TSource](IEnumerable1 source, Func
2 keySelector, Func2 elementSelector, IEqualityComparer
1 comparer) at System.Linq.GroupedEnumerable3.GetEnumerator() at System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable
1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
Issue Analytics
- State:
- Created 6 years ago
- Comments:8 (5 by maintainers)
This change was introduced to fix issue when connection to database created after data context disposal. In that situation connection wasn’t returned to connection pool after use, which lead to connection pool exhaustion. If you need to defer your query execution, you should also defer disposal of data context.
No, it’s bad practice to use a Iqueryable outside of a using wich created the Iqueryable.