Returning an IEnumerable from a database
This is probably rather obvious, but... when returning an `IEnumerable` from a database, like the records from a table, don't do this: using (var db = GetDatabase()) { return db.GetTable("Table1"); } because it will throw an exception when trying to enumerate those records, since the database connection has already been disposed. Don't do this either: using (var db = GetDatabase()) { return db.GetTable("Table1").ToList(); } because it will retrieve all records from the table, even if you only need a small subset. A slightly better way is to do this: using (var db = GetDatabase()) { foreach (var item in db.GetTable("Table1")) yield return item; } This way, the `Dispose` method doesn't get called until the enumeration is over and if you only `Take()` a limited number of records from the result, it won't load the whole table. On the other hand, if you only add `Where()` clauses to the result, it will still enumerate every...