Linq to SQLは、IQuery可能でリレーションがいっぱいのオブジェクトを作成します。
HTMLヘルパーには、のような特定のインターフェイスオブジェクトが必要ですIEnumerable<SelectListItem>
。
私が起こり得ること:
- すべての手荷物なしでLinqからSQLへのオブジェクトを再利用します。つまり、追加のドメインモデルクラスなしでLinqからSQLオブジェクトへのPocosを返しますか?
- SelectListItem列挙のようなHtmlヘルパーオブジェクトに簡単に変換できる(または変換できる)オブジェクトを抽出しますか?
関心の分離を壊さずにこれを行う方法はありますか? ニーズを埋めるための巧妙なトリック?
たとえば、これがリポジトリ内にある場合、SelectListItemはそこにありません。これselect new
は、手荷物なしでLinqからSQLにオブジェクトを切り出すための優れた方法ですが、それでも参照されるべきではないクラスを参照しています。
IEnumerable<SelectListItem> result = (from record in db.table
select new SelectListItem {
Selected = record.selected,
Text= record.Text,
Value= record.Value }
).AsEnumerable();