2013-08-20 93 views
0

我有一個dbcontext,我查詢返回一個模型,其中包含所有項目的總數和一個代表項目的子集的Ienumerable類型。我有三種環境:localhost,Development和Test。使用相同版本的代碼,Development和localhost會返回包含count和項目列表的完整數據集。測試用一個空的物品清單返回正確的計數。代碼集在所有環境中都是相同的。我已將所有環境指向同一數據庫,以隔離數據庫中可能存在的任何問題。查詢看起來像:實體框架返回部分爲空數據集

var rawItems = context.entity.Where(x => x.id == ID).OrderBy(x => x.id); 
totalCount = rawItems.Count(); 
return rawItems.Skip(0).Take(25).Select(x => x.ToExternalModel()) 

ToExternalModel是變換方法,它採用了對象,並將其轉變爲一個不同的模型。這段代碼沒有拋出異常。我刪除了所有嘗試/捕獲以確保。

我真的認爲這是一個環境問題,我真的不知道它可能是什麼。

+0

您爲什麼需要跳過(0)?如果您只是返回rawItem而不將其轉換爲外部模型,結果是否相同? – Nilesh

+0

這段代碼表示我用來執行的參數。在真正的代碼中,0是一個變量,可能不是0.我沒有嘗試過只返回原始項目列表,但是爲了工作,這意味着轉換在三臺機器中的一臺上表現不同。 – user2698212

+0

事實證明,在測試服務器上生成的查詢與在其他服務器上生成的查詢不同(不同的連接結構)。我仍在研究它爲什麼會有所不同。 – user2698212

回答

0

問題是實體框架模式中的外鍵定義錯誤。我仍然不確定爲什麼某些環境創建了查詢的工作版本,並且一個環境創建了非工作查詢。我將繼續研究,但修復外鍵定義是解決方案。