“Local” Queries 2nd edition
Danny Simmons posted small helper method for runnning queries against local cache (in ObjectContext). Many of you are probably using similar method. But I don’t like to have to specify entity set as a string. That’s a first step for refactoring problems. 😃
Thus I created little bit different version, using same trick as Matthieu Mezil with Include.
public static IEnumerable<TEntity> Local<TEntity, TObjectContext>(this ObjectContext context, Expression<Func<TObjectContext, ObjectQuery<TEntity>>> entitySet) where TEntity : class
{
if (!(entitySet.Body is MemberExpression))
throw new ArgumentException("entitySet");
string name = ((MemberExpression)entitySet.Body).Member.Name;
return context.Local<TEntity>(name);
}
It’s using Danny’s original one to do the dirty work 😉, so it’s just a small helper for helper. You can call it like e.Local<DETAIL, MyEntities>(x => x.Details).ToArray();
instead of e.Local<DETAIL>("Details").ToArray();
.