1

EFエンティティに計算フィールドを含めることは可能ですか?たとえば、商品を販売するショップがあり、商品がカテゴリにグループ化されているとします。

ショップの管理者に編集用のカテゴリのリストが表示されたら、リストの一部として各カテゴリの製品の数をリストしたいと思います。

NHibernateでは、次の式を使用します。

<property name="Products" formula="dbo.Category_NumProducts(id)" />

EFで同様のことが可能かどうかはわかりません。カテゴリビューを作成してこれを2番目のエンティティにマップできることはわかっていますが、ほぼ完全に複製されているため、これは間違っているようです。

編集:これがEFで不可能な場合、これを達成するための最良の方法は何ですか?

4

1 に答える 1

2

残念ながら、Categoryテーブルにこれが計算列として含まれていない場合、2番目のエンティティを作成せずにマップすることはできません-データベースビュー、EDMXでのクエリの定義、またはEDMXでのクエリビューにつながります(ただし、クエリビューは機能しない可能性があります集計関数を計算する必要があります)。

編集:

IMHOの最も単純な(そして最良の)解決策は、ViewModel(マップされていないクラス)を作成し、Linqクエリで射影を使用することです。

var query = from c in context.Categories
            where ...
            select new CategoryView {
                Id = c.Id,
                Name = c.Name,
                ...
                Products = c.Products.Count()
            };
于 2012-07-18T09:21:16.050 に答える