0

ASP.Net MVC 5 で Entity Framework 6 Model First を使用すると、奇妙な問題が発生します。

私は学生のクラスと家族のクラスを持っています。家族は多くの学生を持つことができます。

問題なく家族を追加できますが、その家族に学生を追加すると、異なるキーを持つ 2 つのレコードが作成されます。

これは私のモデルです:

     public partial class Family
{
    public Family()
    {
        this.Students = new HashSet<Student>();
        this.Contacts = new HashSet<Contact>();
    }

    public System.Guid FamilyId { get; set; }
    public string PayerType { get; set; }
    public bool ProblemAccount { get; set; }
    public bool Active { get; set; }
    public string CustomId { get; set; }
    public string FamilyName { get; set; }
    public string Note { get; set; }

    public virtual ICollection<Student> Students { get; set; }
    public virtual ICollection<Contact> Contacts { get; set; }
}

   public partial class Student
{
    public Student()
    {
        this.Phones = new HashSet<Phone>();
        this.Addresses = new HashSet<Address>();
        this.Classes = new HashSet<Class>();
    }

    public System.Guid StudentId { get; set; }
    public string Name { get; set; }
    public string Last { get; set; }
    public System.Guid FamilyFamilyId { get; set; }
    public string CustomId { get; set; }
    public string Email { get; set; }
    public bool MassEmail { get; set; }
    public string Gender { get; set; }
    public string Transportation { get; set; }
    public string School { get; set; }
    public Nullable<System.DateTime> StartDate { get; set; }
    public Nullable<System.DateTime> EndDate { get; set; }
    public Nullable<System.DateTime> BirthDate { get; set; }
    public bool Active { get; set; }
    public string Note { get; set; }
    public bool Citizenship { get; set; }

    public virtual Family Family { get; set; }
    public virtual User User { get; set; }
    public virtual ICollection<Phone> Phones { get; set; }
    public virtual ICollection<Address> Addresses { get; set; }
    public virtual ICollection<Class> Classes { get; set; }
}

これは、学生を追加するための私のコントローラーです:

   public async Task<ActionResult> AddNewStudent(Guid FamilyId, NewRegistrationViewModel model)
    {

        model.Student.StudentId = Guid.NewGuid();
        model.Student.FamilyFamilyId = FamilyId;
        db.Students.Add(model.Student);

        await db.SaveChangesAsync();

        return View();
    }

重複しないようにする唯一の方法は、StudentId の新しい GUID を生成しないことでした。AddNewStudent Controller の最初の行にコメントを付けると、正常に保存されますが、GUID がなく、もちろんそれは望ましくありません。

このような:

  public async Task<ActionResult> AddNewStudent(Guid FamilyId, NewRegistrationViewModel model)
    {

        //model.Student.StudentId = Guid.NewGuid();
        model.Student.FamilyFamilyId = FamilyId;
        db.Students.Add(model.Student);

        await db.SaveChangesAsync();

        return View();
    }
4

1 に答える 1