前提・実現したいこと
C#で一斉連絡ツールを作っています。
あらかじめ複数の質問を入れた定型文をいくつか作成しておき、選んでメールを送信し回答してもらうというものです。
発生している問題・エラーメッセージ
定型文を選択する画面で、LINQ to Entitiesを使用して親テーブルの定型文テーブルは作成日時の昇順、子テーブルの質問項目は項目番号順に並べてDBから取ってきたいのですが、エラーになります。
The entity or complex type 'safeApplication.Models.QTemplate' cannot be constructed in a LINQ to Entities query.
該当のソースコード
// 表示する定型文の一覧を作成日時の昇順でリスト List<QTemplate> template = (from qt in db.q_template join qti in db.q_template_item on qt.corporation_id equals qti.corporation_id into qtGroup where qt.corporation_id == corporation_id orderby qt.template_created ascending select new QTemplate { corporation_id = qt.corporation_id, template_id = qt.template_id, template_heading = qt.template_heading, template_subject = qt.template_subject, template_content = qt.template_content, template_created = qt.template_created, q_template_item = qt.q_template_item .OrderBy(t => t.confirmation_item_id) .Select(t => new QTemplateItem { corporation_id = t.corporation_id, template_id = t.template_id, confirmation_item_id = t.confirmation_item_id, required_item = t.required_item, question_sentence = t.question_sentence, option1 = t.option1, option2 = t.option2, option3 = t.option3, option4 = t.option4, option5 = t.option5, option6 = t.option6, option7 = t.option7, option8 = t.option8, option9 = t.option9 }).ToList() }).ToList();
試したこと
調べたところ、匿名型なら可能とあり、参考にしたサイトもvarを使用していたのでList<QTemplate> ではなくvarに変更して実行しましたが変わりませんでした。
template_created = qt.template_created,
から }).ToList() までを削除して実行してもエラーは変わりませんでした。
dbから親テーブルだけを取得し別の変数に入れて、in db.q_template の代わりに使用したところ、表示はうまくいきましたが、実施されたSQLを見てみると、ORDER BY confirmation_item_id でソートされていませんでした。
補足情報(FW/ツールのバージョンなど)
PostgreSQL
ASP.net MVC5
EntityFramework6.Npgsql
回答1件
あなたの回答
tips
プレビュー