質問

私が使っている企業の枠にとってのコメントする。コメントはDATEMODIFIEDの物件Nullableます。私を保存-管理することに照会するフィルターによるコメントの日付、作成startDateオブジェクトは、次の

Dim q As ObjectQuery(Of COMMENT) = _ 
   (From c In model.COMMENT Select c)

If startDate.HasValue Then
   q = q.Where(Function(c) startDate.Value <= c.DATEMODIFIED)
End If

問題はq.toList()が返さないご意見ものだと思います。すべてのコメントがデータベースにしていDATEMODIFIED値、もしていただくためにはDateTime.MinValueのstartDate、クエリが一致しない他の機関となった。

私はブレークポイントの設定前の合算使用は、Visual Studio時計ウィンドウにしてみて機能を参照してください:

q.ToList()(0).DATEMODIFIED    'Returns the expected date 
startDate.Value               'Returns the expected date 
startDate.Value <= q.ToList()(0).DATEMODIFIED    'Returns True...

がままにぶつかることから、q=q.が(述語)、q.ToList()なが返します。私stumped.

役に立ちましたか?

解決

更新: マ忘れてしまったが、LINQ to Entities、すべての表現が翻訳されSQLの呼び出しではなく、後加工のコードが、デバッグの提案以下にないものです。

そのため、今までの開始については、同じ発生するSQL文は、リンク元に対するデータベースを検証するかどうかのSQLを生成による自主体の枠組みプロバイダが実際のデータも予定しているとのことです。@クレイグStuntzコメント以上ものではないことにご注意願います。います。一度、パラメータ化されたSQL、私が実行するSQLを直接コードを使用 System.Data.OracleClient や妥当性を検証する実際の結果を取得するかを返します。覚えている注入同じパラメータ値であるこ ObjectQuery.Parameters.また、付属のパラメータを自分自身を実行するクエリからOracleお客様のアプリの選択です。

が得られないときには、いくつかの結果からSQLしまれてくる可能性があることでdevArtのプロバイダのクエリが間違っています。

ので無視して構いませんか。で適用され、トラブルシュートザリー-オブジェなLINQ to Entities

一部のアイデアを診断します:

最初に、この時計ウィンドウ

q.Where(Function(c) startDate.Value <= c.DATEMODIFIED).Count()

私は仮にゼロが返されますが、その分の排除く、他の多くの変数だん少なくなってきている。

次に、私はにLINQクエリょう--その代わりにへと追加の()別途、使い方は二つのクエリでは、このように:

Dim q As ObjectQuery(Of COMMENT)
If startDate.HasValue Then
    q = (From c In model.COMMENT Where startDate.Value <= c.DATEMODIFIED Select c)
Else
    q = (From c In model.COMMENT Select c)
End If

この作品は、そのようにどのようにWhere取り付けていたの既存のLINQクエリはバグのおDBMSの途中経路におけるエンティティの枠組みプロバイダ?

という場合もない、次のステップにいかに診断することを確認コード内のwhere節することが求められていますが、チェックの価値に渡されるコードです。たい設定intra-ラインのブレークポイントはVBようにするのに対しクライアントまで、フルのC#でも簡単に時refactorムダを他の独立した機能や設定のブレークポイントである。このように:

Sub Main()
    Dim testDate As Date = New Date(2005, 1, 1)
    Dim x = New List(Of Date?)
    x.Add(New Date(2009, 1, 1))
    x.Add(New Date(2008, 1, 1))
    x.Add(New Date(2007, 1, 1))
    x.Add(New Date(2006, 1, 1))
    x.Add(New Date(2005, 1, 1))
    x.Add(New Date(2004, 1, 1))
    x.Add(New Date(2003, 1, 1))
    x.Add(New Date(2002, 1, 1))
    x.Add(New Date(2001, 1, 1))
    Dim y = From n In x Select n
    y = y.Where(Function(val) test(val, testDate))
    Dim z = y.ToArray()
End Sub

Function test(ByVal date1 As Date, ByVal date2 As Date) As Boolean
    test = date1 >= date2
End Function

チェックの価値観に送られるご比較機能--い。の比較を返しますが、ご了承くださいですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top