Имеет ли ADO.NET Entity Framework конструкцию, аналогичную LINQ to SQL GetTable <T>?

2

Существует ли у 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>();
      }
    }

Но пока я не смог узнать, как это сделать.

Какое решение?

Теги:
entity-framework
ado.net
linq-to-sql

2 ответа

0
Лучший ответ
    public IQueryable<T> FindAll<T>()
    {
        var baseType = typeof(T);
        return CreateQuery<T>("[" + baseType.Name.ToString() + "]").OfType<T>();
    }

И, похоже, делает эту работу для меня: -)

  • 0
    Из того, что я узнал сегодня, одно из основных отличий от LINQ к SQL к Entity Framework (LINQ to Entities) заключается в том, что вы кодируете против модели, а не базы данных. Так что реальной замены не существует. Но приведенный выше пример, безусловно, работает.
  • 0
    Это, кажется, самое правильное решение (насколько я знаю). Ответ Марка Гравелла определенно неплох, но решение менее изящно, чем это. Здесь мы имеем дело с простым Entity SQL. Я запрашиваю все объекты типа T из EF. И он возвращает IQueryable <T>.
2

Маркировка как вики, поскольку я не могу претендовать на кредит, но ответ MSFT на этот вопрос есть здесь: Что такое equivilant из GetTable в L2E.

  • 0
    Да спасибо. Я обнаружил, что это хорошо. Так что, похоже, EF все еще не хватает, хотя его можно добавить с помощью специального кода.
  • 0
    Вы всегда можете исследовать бета-версию 4.0?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню