2011-09-14 8 views
-1

だから、私は簡単なlinqクエリを持っている。他のプログラマー(Win7、VS2010上のすべて)は問題なくselectを実行できます。私のマシン上でSQLプロファイラを使用してサーバーdb(私たちはすべて開発サーバー上の同じSQL Server 2008 dbを使用しています)を照合し、実際のクエリが自分のマシンからSQL Server Mgmtスタジオで動作することを確認できますが、IQueryableオブジェクトは0結果。linqクエリは私のマシンだが、すべてのマシンで動作する

すべてが同じ正確なコードベースを使用しています(すべてがHgにチェックされ、すべてが同期されています)。私は自分のマシンを再起動し、キャッシングがあった場合に備えてデータベースが常駐しています。

where節を削除した場合、結果は実際に戻されます。私たちはすべて迷っています。誰もが任意の明るいアイデアを持っている???ここで

は、あなたが見たい場合にはコードですが、私はそれが、この場合に重要とは思わない:

IQueryable<MOffice> offices = (from returnData in entityModel.MOffices 
              where returnData.HiringProjectCoordinator == true 
              select returnData).Take((int)topCount); 
      return offices.ToList(); 
+2

あなたのマシンや「コードとDBがまったく同じです」という記述は、明らかに異なるものです。真実ではない。いずれにせよ、あなたのためにこれを精神的にデバッグする方法はほとんどありません。しかし、1つの質問。 'topCount'の値はどこから来ていますか?' Take(topCount) 'コールを完全に削除するとどうなりますか? –

+0

他のマシンと同じデータベースに完全に完全に100%確実にアクセスしていますか? –

+0

コードとdbはまったく同じです。 3人の男が私のためにそれを確認した。解決策を見てください - それは今固定されていますが、間違いなく今まで見たことのない最も奇妙なことです。 – Mario

答えて

1

この

var results = entityModel.MOffices 
        .Where(x=>x.HiringProjectCoordinator == true) 
        .OrderBy(x=>x.Something) 
       //.Take(int.Parse(topCount)) 
        .ToList(); 
int count = results.Count(); 
return results; 

は、あなたが期待するように、そのカウントがあるか点検してください。必要に応じてコメントを削除します。

  • LinqPadでクエリが機能しますか。
  • 誰もが同じデータベースを参照していますか?確かに?すなわち特定のレコードfirstNameを 'foo'に変更して決定する。
  • 他のテーブルと同様のクエリが同じ動作をしますか?
+0

私もそれを試してみましたが、うまくいきませんでした(もう一度他のすべての開発者マシンで動作します) – Mario

+0

申し訳ありませんが、私はあなたがクエリのスタイルを変更することを意味していると思いました。あなたが提案したようなトップカウント(テイク)を選択しないと、それは動作しますか?もちろん、私はそれを10または20に制限する必要があるので、何をお勧めしますか? – Mario

+0

ハハ。私は困惑している。 Take()を取り除いて(同じ正確なコードに)戻すと、それは私のマシン上で動作します(あるいは、それは3回目の再起動でした)。 Thx for the – Mario

-1

LinqPadを使用して、生成されたLINQのSQL文を検査します。

+0

私の質問を読むと、私はプロファイラを使って実際のSQLを検査し、それが実効的に実行され、正しい数の結果が返されたことがわかります – Mario

関連する問題