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です...これはうまく機能しますが、そのようなクエリごとにクラスを作成したくありません。
アイデア?