TL;DR私は with を使用EntityFramework 5.0
してOracle
おり、2 つの列のインデックスのみを使用して 2 つの列のテーブルをクエリする必要がありNVL
ます。
詳細は何時間もの試行錯誤の末... できる限り整理してみます。
必要な SQL クエリは次のとおりです。
SELECT t.Code, NVL(t.Local, t.Global) Description
FROM Shows t
Where t.Code = 123
それで、問題は何ですか?使用したい場合は、row( )Context.Shows.Parts.SqlQuery(query)
全体を返す必要がありますが、 Table Access Fullを取得するため、目的の列のみを返す必要があります。*
私が試した次のこと(実際には、次の前に多くの試行がありました...)は、null合体演算子(??
)を使用していました。
Context.Shows.Where(x => x.Code == 123)
.Select(x => new { x.Code, Description = x.Local ?? x.Global);
しかし、それが使用している SQL は複雑であり、重要なcase & when
インデックスを使用して使用していません Code, Nvl(Local, Global)
!
私の次のステップはDatabase.SqlQueryを使用することでした
context.Database.SqlQuery<Tuple<int, string>>("the Raw-SQLQuery above");
しかし、Tuple
抽象的であってはならず、デフォルトのctorが必要なエラーが発生します(そうではありません)。
私が嫌いな最後のステップは、これら2つのプロパティ( )のみを持つクラスを作成することCode, Description
です...これはうまく機能しますが、そのようなクエリごとにクラスを作成したくありません。
アイデア?