I am writing a generic repository and got stuck on the List<t>() method, as I didn't have any entity set name. Normally you can glean this from an entity instance, like in an Update<t>() method, but List<t>() has no starting point. I deduced the following method to determine the Type of an entity set object that contains entities of type T, which is the type parameter of my repository object.
private static string GetEntitySetName(FoodEntities context)
{
var entitySetType = context.GetType().GetProperties().Where(
p =>
p.PropertyType.IsGenericType && p.PropertyType.Name.StartsWith("ObjectSet") &&
p.PropertyType.GetGenericArguments()[0].Name == typeof (T).Name).Single();
return entitySetType.Name;
}