正規化されたデータベースで EF を使用しています。
私の Offers エンティティには、次のテーブル構造があります。
オファー
プラス次のいずれか:
投稿タイプ
Offers_SitePost または Offers_CommunityPost
プラス次のいずれか:
オファータイプ
Offers_VoucherCode または Offers_Deal または Offers_Sale
したがって、完全なオファーは、Offers の明確なエントリに加えて、PostType テーブルの 1 つのエントリと、OfferType テーブルの 1 つのエントリで構成されます。
他のどのテーブルにデータを含める必要があるかは、offers テーブルからわかります。これを行うために IsSitePost のようなプロパティを使用しています。
単一のオファーとオファーのリストの両方について、必要なデータだけを取得する最善の方法を見つけようとしています。明らかに、すべてのテーブルを含めることができますが、これが最も効率的であるとは思えません。
単一のオファーのために取り組んでいるコードは次のとおりです。
public static Offer GetById2(int ID)
{
ID.ThrowDefault("ID");
var r = new CrudRepo<Offer>(Local.Items.Uow.Context);
var offer = r.Find(o => o.OfferId == ID);
// if is site post Include("SiteOffers")
// else is community post Include("CommunityOffers") etc
return offer.SingleOrDefault();
}
これを達成するための最善の方法についてアドバイスを提供できる人はいますか?