Подтвердить что ты не робот

Не удалось найти реализацию шаблона запроса для типа источника "System.Data.Entity.DbSet"

Я использую Entity Framework в первый раз, но кажется, что он работает не так, как ожидалось.

У меня есть этот код:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

public static class QueryClass
{
    public static void Query()
    {
        using (var context = new MyDbEntities())
        {
            DbSet<MyTable> set = context.Tables;
            var query = from val in set select value; 

        }
    }
}

В строке запроса (точно "заданная" переменная подчеркнута красным цветом) Я получаю ошибку:

Не удалось найти реализацию шаблона запроса для типа источника 'System.Data.Entity.DbSet'. 'Select' не найден. Отсутствует ссылка или директива using для "System.Linq"

MyDbEntities автоматически генерируется Entity Framework в подходе Database-First, context.Tables является DbSet, поэтому он должен иметь возможность использовать Linq, который был добавлен через директиву using. Во избежание недоразумений в этом классе я нахожу следующее:

public virtual DbSet<MyTable> Tables { get; set; }

Что мне не хватает, чтобы сделать работу select?

Спасибо.

4b9b3361

Ответ 1

вам нужно будет добавить ссылку на System.Data.Linq

System.Data.Linq специфичен для LINQ-SQL (DataContext и т.д.)

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Linq;
using System.Linq;

public static class QueryClass
{
    public static void Query()
    {
        using (var context = new MyDbEntities())
        {

            IQueryable<MyTable> qTable= from t in context.Tables
                                        select t; // can you confirm if your context has Tables or MyTables?
            Console.WriteLine("Table Names:");
            foreach (var t in qTable)
            {
                Console.WriteLine(t.Name);//put the relevant property instead of Name
            }
        }
     }
}

Ответ 2

Просто добавил ссылку using System.Linq; и работал нормально, как уже упоминалось выше.