connections will not be reusable if they are still used. This can happen, when you perform a LINQ query that returns more than 50 elements, start the enumeration, and do not fetch all of the data, but break the enumeration without disposing the enumerator. This way, OpenAccess has no chance to know if you are about to further enumerate the result (hence use the connection) or not. This is what I meant by breaking the enumeration. To get around this issue please make sure that the foreach loop is used; a manual for or while loop might have this problem. Throwing an exception while enumerating the result could also lead to such non-terminating behavior. Counting on the GC to terminate the logical reading process is not sufficient here; this is why there is the Disposable pattern.
From looking at our code again, I could see that with the ExecuteQuery we do not have this issue; in cases of exceptions the connection is closed.
OpenAccess ORM is now Telerik Data Access
. For more information on the new names, please, check out the Telerik Product Map