2017-05-22 29 views
0

我試圖使用實體框架,但我不斷收到錯誤「底層提供程序在打開時失敗」。我在代碼中存儲密碼getConnectionString函數提供了一個有效的連接字符串,我知道它的工作原理,因爲我始終使用該函數(雖然在我的非實體框架程序中)。我在我的Model1文件中定義了Customer。客戶是一個數據庫。實體框架「無法找到查詢模式的實現」

// gets valid connection string 
string cs = getConnectionString(); 

var entityConnectionStringBuilder = new EntityConnectionStringBuilder(); 
entityConnectionStringBuilder.Provider = "System.Data.SqlClient"; 
entityConnectionStringBuilder.ProviderConnectionString = cs; 
entityConnectionStringBuilder.Metadata = "res://*"; 


CUSTEntities1 CustContext = new CUSTEntities1(entityConnectionStringBuilder.ToString()); 

var q = (from i in CustContext.Customers 
     where i.CustLen == 15 
     select new CustomerClass 
     { 
      fid1 = i.fid1, 
      fid21 = i.fid2, 
      custlen = (int)i.CustLen 
      }).ToList<CustomerClass>(); 

我是新來的實體框架,我試圖做一個簡單的測試應用程序來幫助我理解它。任何幫助將不勝感激。我從頭開始重建項目,以確保我擁有EF所需的所有部件。

+1

'客戶'是IEnumerable類型嗎? 下面是一個例子:https://stackoverflow.com/questions/8215773/could-not-find-an-implementation-of-the-query-pattern –

+0

我看到那篇文章,並試圖建模後沒有成功 – Missy

+1

來吧想想看,你應該小心最新的編輯。它改變了這個問題,現在可能應該是一個新的(你可能想提供你目前的'CUSTEntities1' – Brunner

回答

1

您應該從上下文中查詢,EF不知道如何處理單獨的類。

查詢需要先從

from customer in context.Customers 

因爲它似乎是你使用的是基於模型或數據庫第一的方針,上下文應該已經包含DbSet。在你的情況下,它在CUSTEntities1

+0

我試過,但a.Customers沒有給我。 – Missy

+1

@Missy你是如何創建模型的? – Brunner

+0

是的 - 我使用的是數據庫第一種方法,我不明白爲什麼客戶沒有提供給我,您的變量名稱的建議是好的 – Missy