###前提・実現したいこと
LINQ式の書き方
###発生している問題・エラーメッセージ
以下のようなエラーメッセージが出ます。
[2017-04-27 11:04:58.5497][ERROR][****] サービスでエラーが発生しました。 System.Data.Entity.Core.EntityCommandExecutionException: ストア プロバイダーのデータ リーダーから読み取り中にエラーが発生しました。詳細については、内部例外を参照してください。 ---> System.Data.SqlClient.SqlException: リンク サーバー "******_H_LINK" の OLE DB プロバイダー "OraOLEDB.Oracle" に対するクエリ "SELECT hogehoge....." を実行できません。 リンク サーバー "*******_H_LINK" の OLE DB プロバイダー "OraOLEDB.Oracle" から、メッセージ "" が返されました。 場所 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 場所 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 場所 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 場所 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) 場所 System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows) 場所 System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more) 場所 System.Data.SqlClient.SqlDataReader.Read() 場所 System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.StoreRead() --- 内部例外スタック トレースの終わり ---
###該当のソースコード
c#
1private bool hasSomething {get;set;} 2..... 3var result = context.VIEW_TABLE 4 .WHERE(......) 5 .WHERE(x => 6 !hasSomething 7 || (hasSomething && x.HOGE == hoge) 8 ) 9 .WHERE(.....)
###試したこと
上記ソースを以下に変更したところ動作した。
c#
1private bool hasSomething {get;set;} 2..... 3var result = context.VIEW_TABLE 4 .WHERE(......) 5 .WHERE(x => 6 (!hasSomething && x.HOGE == x.HOGE) 7 || (hasSomething && x.HOGE == hoge) 8 ) 9 .WHERE(.....)
###聞きたいこと
これはC#
(というかLINQ
)の バグでしょうか?
それとも何か書き方がおかしいでしょうか?
###補足情報(言語/FW/ツール等のバージョンなど)
VISUAL STUDIO 2013 (C# Ver.5)
DB: SQL SERVER 2014
※問題のテーブルは、LINKテーブルのVIEWであり、LINK元はORACLEを使用しています

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/27 05:28 編集
2017/04/27 05:28
2017/04/27 08:32
2017/04/28 06:17
2017/04/28 06:23