0
私は、データベースを更新したいが、私は「実行中のシードメソッド」EF 6.複数の追加エンティティが同じ主キーを持つことがあります。私は、Entity Frameworkの6</p> <p>を使用して、いくつかのC#プロジェクトに取り組んでいますエラー
Unable to determine the principal end of the 'CookerAPI.Models.Category_Recipe_Recipe' relationship. Multiple added entities may have the same primary key.
後にこのエラーはここで種子法の一部だています
context.Recipes.AddOrUpdate(x => x.Id_Recipe,
new Recipe() { Id_Recipe = 1, Id_User = 1, Id_Category_Main = 1, Name_Recipe = "zupa z kurek", Rate = 0, Level = "Łatwe", Date_Recipe = DateTime.Now, URL_Photo = "test", Time = 45, Number_Person = 4, Steps = 4, Instruction = "test" }
);
context.Categories_Recipes.AddOrUpdate(x => x.Id_Category_Recipe,
new Category_Recipe() { Id_Category_Recipe = 1, Id_Recipe = 1, Id_Category = 1 }
);
Category_Recipeモデル:
public class Category_Recipe
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id_Category_Recipe{ get; set; }
public int Id_Category { get; set; }
public int Id_Recipe { get; set;}
[ForeignKey("Id_Category")]
public Category Category { get; set; }
[ForeignKey("Id_Recipe")]
public Recipe Recipe { get; set; }
}
レシピモデル:
public class Recipe
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id_Recipe { get; set; }
public int Id_User { get; set; }
public int Id_Category_Main { get; set; }
public string Name_Recipe { get; set; }
public int Rate { get; set; } //rate 0-5
public string Level { get; set; }
public DateTime Date_Recipe { get; set; } //date of create
public string URL_Photo { get; set; } //URL of thumbnail
public int Time { get; set; } // in minutes
public int Number_Person { get; set; } // recipe for number of people
public int Steps { get; set; }
public string Instruction { get; set; }
[ForeignKey("Id_User")]
public User User { get;set;}
[ForeignKey("Id_Category_Main")]
public Category_Main Category_Main { get; set; }
public ICollection<Category_Recipe> Categories_Recipes { get; set; }
public ICollection<Comment> Comments { get; set; }
public ICollection<Element> Elements { get; set; }
public ICollection<Rate> Rates { get; set; }
}
問題はどこにありますか?どのように修正できますか?
わかりません。しかし、あなたはあなたのモデルからCategory_Recipeを完全に排除するかもしれません。レシピにICollection、カテゴリにICollection を宣言します。 EFはデータベースにリンクテーブルを作成しますが、モデルでリンクテーブルを参照する必要はありません。 –
さて、多対多の関係(Category - Recipe = Category_Recipe)を作成したいと思います。これは良い解決策です。 しかし、私は別の多対多の関係(Recipe - Product = Element、Elementにもう一つの行を追加したいのですが、同じ問題を抱えています)を解決するにはどうすればいいですか? – Nedvid
完全なreproなしではわかりません。 –