无法找到源类型的查询模式的实现' System.Data.Entity.DbSet'

时间:2015-07-06 08:55:08

标签: c# linq entity-framework

我第一次使用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; 

        }
    }
}

在查询行上(确切地说&#34; set&#34;变量带有红色下划线)我收到错误:

  

无法找到源类型的查询模式的实现   &#39; System.Data.Entity.DbSet&#39;&#39;选择&#39;未找到。缺少参考或   用于&#39; System.Linq&#39;

的using指令

MyDbEntities由实体框架以数据库优先方式自动生成,context.TablesDbSet,因此它应该能够使用Linq,它已通过using指令。为了避免误解,我在本课程中找到以下内容:

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

为了让select工作,我缺少什么?

谢谢。

2 个答案:

答案 0 :(得分:28)

您需要添加对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
            }
        }
     }
}

答案 1 :(得分:1)

只需添加引用using System.Linq;即可,并且如上所述已经可以正常工作了。