1

存在する成分のリストがあり、主キーの成分 ID と外部キーのレシピ ID が含まれています。私は、単一の材料を多くのレシピにマッピングしようとしています。各レシピには、レシピ ID と材料 ID が含まれています。

以前は、Ingrients レシピ ID をターゲット Recipes レシピ ID と同じに割り当てました。ただし、これにより、材料が単一のレシピに関連付けられることが制限されました。

レシピの materialID を材料に関連付けることで、Recipe には 1 つの材料しか関連付けられないように見えますが、その材料は他のレシピに関連付けることができます。

レシピと材料を関連付けるためのレシピ ID と材料 ID を含むレシピ材料を作成しようとしましたが、成功しませんでした。

現行モデルの紹介です。

レシピモデル:

    [Key]
    public int recipeID { get; set; }
    public int ingredientID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Cost { get; set; }

    public virtual NutritionalValue NutritionalDetails { get; set; }
    public virtual ICollection<Ingredient> Ingredients { get; set; }
    public virtual ICollection<RecipeStep> RecipieSteps { get; set; }

成分モデル:

    [Key]
    public int ingredientID { get; set; }
    //public int recipeID { get; set; }
    public string Name { get; set; }
    public string Descritpion { get; set; }
    public decimal Cost { get; set; }
    public decimal Amount { get; set; }
    public string Type { get; set; }

    public virtual Recipe Recipe { get; set; }

私が達成しようとしている最終的な概念は、ユーザーがレシピ編集ビュー内で材料を選択し、以前に追加された材料を選択し、保存をクリックしてその特定のレシピに関連付けることですが、さらに関連付けることもできます。それをさらにレシピと同時に。

どうもありがとう。

4

1 に答える 1

0

私の知る限り、各レシピに複数の材料を含める必要がありますが、エントリを複製しない材料テーブルが必要です。これは実際には多対多の関係のようなものです。その場合は、データベーススキーマを次のように変更する必要があります。

Ingredient(id (pk), name, etc...)
Recipe(id (pk), name, etc...)
RecipeIngredients(recipeId (fk to Recipe.id), ingredientId (fk to ingredient.id))

このように、レシピはRecipeIngredientsテーブルを介して複数の材料を持つことができ、タプルごとに1つの材料とタプルごとに1つのレシピ(レシピ)を表すテーブル(材料)がまだあります。

それが役立つならLMK:)

于 2012-10-11T14:59:24.473 に答える