Существует ли у ADO.NET Entity Framework конструкцию, похожую на LINQ to SQL GetTable?
Я пытаюсь сделать что-то подобное в Entity Framework, что я очень привык делать в LINQ to SQL. ADO.NET Entity Framework имеет одинаковую возможность?
LINQ to SQL:
dataContext.GetTable<T>();
Это приведет к набору Queryable типа "T".
В Entity Framework я хотел бы сделать то же самое:
//NOTICE: This is a partial extension of the auto-generated Entities-model
// created by the designer.
public partial class Entities : IEntities
{
public IQueryable<T> FindAll<T>()
{
//pseudo-code
// return from all entities, the entities that are of type T as Queryable
}
}
Поскольку я не мог понять это, я сделал, что я считаю, "вонючей" обходной способ:
//NOTICE: This is a partial extension of the auto-generated Entities-model
// created by the designer.
public partial class Entities : IEntities
{
public IQueryable<Users> FindAllUsersQueryable
{
get { return Users; }
}
public IQueryable<Registrations> FindAllRegistrationsQueryable
{
get { return Registrations; }
}
//... and so on ...
}
То, что я хочу, похоже на:
//NOTICE: This is a partial extension of the auto-generated Entities-model
// created by the designer.
public partial class Entities : IEntities
{
public IQueryable<T> FindAll<T>()
{
return GetEntities<T>();
}
}
Но пока я не смог узнать, как это сделать.
Какое решение?
public IQueryable<T> FindAll<T>()
{
var baseType = typeof(T);
return CreateQuery<T>("[" + baseType.Name.ToString() + "]").OfType<T>();
}
И, похоже, делает эту работу для меня: -)
Маркировка как вики, поскольку я не могу претендовать на кредит, но ответ MSFT на этот вопрос есть здесь: Что такое equivilant из GetTable в L2E.