0

私には2つのクラスがあります:

public class Product : Base
{
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual List<Ingredient> Ingredients { get; set; }
}

public class Ingredient:Base
{
    public string Description { get; set; }
}

私の質問は:製品の成分を挿入/更新するための最良の方法は何ですか?挿入/更新の前に製品と成分を検証する必要があると仮定すると、1つの製品リポジトリを作成する必要がありますか、それとも製品リポジトリと成分リポジトリを作成する必要がありますか?


コントローラ内でDbContextを使用すると、非常に簡単であることがわかりました。ただし、modules(bl、dao)で作成されたシステムが必要な場合はどうでしょうか。

4

1 に答える 1

1

リポジトリの数の決定は、ドメインモデルの集約ルートの分析に基づいています。の場合、インスタンスProductの集約ルートは。なしでは存在できません。IngredientIngredientProduct

Productの集約ルートIngredientは?はいの場合は、製品と材料の両方を1つで処理する必要ProductRepositoryがあります。そうでない場合は、両方のエンティティに個別のリポジトリを用意する必要があります。

2つのリポジトリが必要であるという通常の兆候は多対多の関係ですが、そのような場合、EFエンティティはリポジトリとうまく連携しません。これは、間に直接ナビゲーションプロパティがProductあり、Ingredient開発者に2番目のリポジトリを使用させる方法がないためです。Ingeredientアクセスと変更のためのリポジトリ。

于 2012-05-21T08:22:03.677 に答える