2011-05-10 87 views
5

我第一次使用LINQ在我的項目,以SQL和使用如下語句:不同的結果在實體框架比LINQ to SQL的

var ProjectRouteEmails = EmailManagerDAL.Context.ProjectRouteEmails 
      .Where(p => p.ProjectID == ProjectID); 

這正確返回從視圖ProjectRouteEmails的三個不同的電子郵件。從電子郵件表返回的ID是117,591和610.

我改爲LINQ to Entities並使用相同的視圖和相同的LINQ語句,但即使我收回三條記錄,它是第一條記錄,身份證號碼117,這是返回三次。

我試着寫了LINQ statment這樣的:

var ProjectRouteEmails = from p in EmailManagerDAL.Context.ProjectRouteEmails 
           where p.ProjectID == ProjectID 
           select p; 

,但它並沒有區別;相同的記錄返回三次。

我走進SQL Server Management Studio並運行查詢:

select * from ProjectRouteEmails (nolock) 
where ProjectID = 12 

和正確的三個獨特返回的記錄。

這是怎麼回事?

謝謝!

+0

我會仔細檢查你是如何迭代通過這個輸出...聽起來很腥 – hunter 2011-05-10 13:19:48

+0

我只是將它綁定到一個網格。此外,我還設置了一個斷點,並在觀察窗口中檢查它是否顯示相同的結果。 – user390480 2011-05-10 13:24:05

回答

5

確保實體數據模型中的項目路由電子郵件的實體密鑰設置正確。將視圖導入模型時,實體鍵有時會混亂。

+0

有趣...你能提供具體細節還是更多細節?它在實體對象中嗎?或者...一些關係元數據?有些人可能會使用這些工具創建實體數據模型,而無需深入研究。 – IAbstract 2011-05-10 14:07:39

+0

這是它!謝謝Aducci!它似乎已經任意選擇了一個文本字段作爲實體鍵。我將其更改爲正確的字段,它的工作原理。謝謝! – user390480 2011-05-10 14:10:00

+2

僅供其他人蔘考。打開edmx,然後右鍵單擊該字段並添加實體鍵。 – causita 2014-07-10 16:19:37