2015-07-06 56 views
11

我第一次使用實體框架,但它看起來不像預期的那樣工作。無法找到源類型爲'System.Data.Entity.DbSet'的查詢模式的實現

我有這樣的代碼:

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; 

     } 
    } 
} 

在查詢行(正是「設置」變量紅色下劃線),我得到的錯誤:

Could not find an implementation of the query pattern for source type 'System.Data.Entity.DbSet'.'Select' not found. Missing a reference or an using directive for 'System.Linq'

MyDbEntities被自動生成數據庫優先方法中的實體框架context.TablesDbSet,所以它應該能夠使用通過using指令添加的Linq。爲了避免misurderstantings,這個類中我發現了以下內容:

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

我是什麼,以使select工作丟失?

謝謝。

+0

沒有你的項目有一個參考System.Core程序? – Krishna

+0

@Krishna是的它確實 – Fylax

回答

14

,你將需要添加引用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 
      } 
     } 
    } 
} 
+0

我引用_System.Data.Linq_並通過_using_指令添加它,但它仍然給我那個問題 – Fylax

+0

它不起作用。直接使用從[...]給我error_Could找不到類型或命名空間'從'_而前置var x =從[...]給我這篇文章的原始錯誤。 – Fylax

+0

對不起,我在VS以外做這個。請再試一次。同時檢查你的上下文是否有MyTables或Tables作爲表db集名稱 – Krishna

相關問題