web-dev-qa-db-ja.com

コードファーストを使用してC#でデータモデルを詳細またはスタブとして構造化する方法は?

SQLテーブルに裏打ちされた製品リストがあるとします。これは大きなデータモデルです(簡潔にするためにここでは切り捨てられています)が、次のようになっているとしましょう。

public class Product {
    public int Id { get; set; }
    public int Number { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public decimal Cost { get; set; }
    public int UnitsOnHand { get; set; }
    public int Ordinal { get; set; }
    public int Sku12 { get; set; }
    public string Color { get; set; }
    public Vendor Vendor { get; set; }
    public Image PrimaryImage { get; set; }
    public User CreatedBy { get; set; }
    public DateTime CreatedOn { get; set; }
    public ICollection<Image> Images { get; set; }
    public ICollection<Category> Categories { get; set; }
    public ICollection<Coupon> Coupons { get; set; }
    public ICollection<Tag> Tags { get; set; }
    public ICollection<ProductOption> Options { get; set; }
}

次のように、コレクションに返されるProductの小さなサブセットのみが必要な製品リスト(インデックス)ページのようなものに夢中になっています。

public class ProductBasic {
    public int Id { get; set; }
    public int Number { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int UnitsOnHand { get; set; }
}

public ActionResult SearchProducts(string keyword) {
    IEnumerable<ProductBasic> result = _productService.Search(keyword);
    return View(result);
}

目的のエンティティの詳細ページが選択される前にテーブル/グリッドを構築でき、忠実度の高いProductが返され、関連するImageCategoryCouponTag、およびProductOptionコレクション(FKレコード)を含む十分なデータ。

これらのオブジェクトは同じ物理テーブルを表すため、命名規則と最初のコードの処理の両方に苦労しています。つまり、データベースにProductBasicを作成する必要はありません。

私の意図は、詳細なオブジェクトが必要になるまで、コレクションをクライアントに送信するための軽量のオブジェクトを用意することです。このような小さなサブセットデータモデルの標準的な命名規則は何ですか?私はProductBasicProductStubProductRootProductSnip、およびProductShortをいじくり回しています。

次に、Productは私のテーブルを表し、最初にProductBasicをコードから除外する必要があります。

2
jbwebtech

疑わしい場合は、ドメインの専門家を満足させる名前を使用してください。

未来への旅に出ましょう。あなたは今誕生日を迎えました。休暇を取った。そして、さらに5つの驚くべきことをコード化しました。今、あなたの上司があなたのところに来て、インデックスページに表示するベンダーが必要だと言います。あなたはそれを生成するコードは言うまでもなく、そのページが存在することさえ忘れています。したがって、幸運を祈って「IndexPage」というフレーズをコードベースで検索します。

今、何と名付けたいですか?

2
candied_orange