私はEntity Framework Code-Firstと汎用リポジトリパターンを使用してデータベースに最初のデータセットを挿入しようとしています。私のPOCOクラスは、これらの関係を持っている:最初のリポジトリ・パターンを使用してコード・ファーストにEFにデータの最初のセットを挿入します。
- 学生はレッスン
- 学生がここでコラージュ
と1対多の関係を持っているとの多対多の関係を持っている私のPOCOクラスされています
ここでpublic class Student : EntityBase
{
public Student()
{
this.Lessons = new HashSet<Lesson>();
}
public string Name { get; set; }
//FK Collage
public int CollageId { get; set; }
public virtual ICollection<Lesson> Lessons { get; set; }
public virtual Collage Collages { get; set; }
}
public class Lesson : EntityBase
{
public Lesson()
{
this.Students = new HashSet<Student>();
}
public string Name { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
public class Collage : EntityBase
{
public Collage()
{
Students = new List<Student>();
}
public string Name { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
は私のマッピングです:
public class StudentMap : EntityTypeConfiguration<Student>
{
public StudentMap()
{
//ToTable("TblStudent");
HasRequired<Collage>(x => x.Collages)
.WithMany(e => e.Students)
.HasForeignKey(i => i.CollageId)
.WillCascadeOnDelete(false);
HasMany<Lesson>(x => x.Lessons)
.WithMany(e => e.Students)
.Map(i =>
{
i.MapLeftKey("StudentFKId");
i.MapRightKey("LessonFKId");
i.ToTable("TblStudent_Lesson");
});
}
}
私のコントローラで今
:
public ActionResult Index()
{
Repository<Student> _reStu = new Repository<Student>();
_reStu.Add(new Student { Name = "Test", CollageId = 0, Collages = null, Lessons = null });
_reStu.save();
return View();
}
私はこのエラーを取得:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.Students_dbo.TblCollage_CollageId". The conflict occurred in database "test2", table "dbo.TblCollage", column 'Id'. The statement has been terminated.
は、私は私がテーブル間の関係を持っていますが、関係があるときにどのように私は、データの最初のセットを挿入することができることを知っています?私はデータを渡した後で私の関係を含めるべきですか?