0

次の例外が発生します。

ここに画像の説明を入力してください

私はここここ、そしてここで多くの投稿を経験しました。しかし、問題の適切な解決策を示唆する投稿はありません。この状況に実際にどのように取り組むことができるか知りたいです。

ModelsContextsは次のとおりです。

public class Context : DbContext
    {
        public Context() : base("DefaultConnection")
        {
        }
        public DbSet<Student> Students { get; set; }
        public DbSet<Course> Courses { get; set; }
        public DbSet<Staff> Staffs { get; set; }
    }

public class Student
    {
        public int StudentId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        [Required]
        public virtual Course Course { get; set; }
        [Required]
        public virtual Staff Staff { get; set; }

    }


 public class Staff
       {
           public int StaffId { get; set; }
           public string Name { get; set; }
           public string  Contact { get; set; }
       }


public class Course
    {
        public int CourseId { get; set; }
        public string CourseName { get; set; }
        [Required]
        public virtual Staff Staff { get; set; }
    }

私は次の行でこの例外を取得しています:

 context.Students.Add(student);

次のコードの:

 public void AddStudent()
        {
            Student student = new Student();
            student.FirstName = "Bruce";
            student.LastName = "Wayne";
            student.Course = new Course();
            student.Course.CourseName = "CSE";
            student.Course.Staff = new Staff();
            student.Course.Staff.Name = "Albert";
            student.Course.Staff.Contact = "1234567890";
            context.Students.Add(student);
            context.Courses.Add(student.Course);
            context.SaveChanges();
            Console.WriteLine("Student , Course, Staff Added");
        }
4

2 に答える 2

0

以前、この質問をしたことがあります。これはあなたを助けるはずです。

EF Code Firstが外部キーに問題を与える

参考読みはこちら

http://weblogs.asp.net/manavi/archive/2011/05/01/associations-in-ef-4-1-code-first-part-5-one-to-one-foreign-key-associations. aspx

この記事で探すべき主な部分は、「とにかく複数のカスケード パスとは何ですか?」です。

問題を実際に解決するには、カスケード削除をオンにするパスを特定する必要があります。たとえば、スタッフが削除された場合、コースも削除されますか、それとも残りますか?

于 2012-12-31T09:18:33.843 に答える
0

そのエンティティのカスケード削除を無効にすると、問題が解決するはずです。この一連のエンティティのカスケード削除が必要な場合は、手動で行います。サイクルがある場合、いつ停止するかを判断する方法がないため、自動的に行うことはできません。

于 2012-12-31T09:22:11.027 に答える