обновление записи приводит к «нарушению ограничения кратности».в asp.net mvc - PullRequest
2 голосов
/ 01 апреля 2012

Я разрабатываю приложение в asp.net mvc и сначала использую код EF для доступа к данным.Вот модель, которую я использую:

  public class Culture
    {
        [Key()]
        public int CultureID { get; set; }

        [Required()]
        [StringLength(250)]
        public string CultureName { get; set; }

        [Required()]
        [StringLength(250)]
        public string CultureDisplay { get; set; }

        public virtual List<HomePage> HomePage { get; set; }

        public virtual List<Person_Local> PersonLocal { get; set; }
    }
    public class Person
    {
        public int PersonID { get; set; }
        [StringLength(250)]
        public string PersonPicAddress { get; set; }

        public virtual List<Person_Local> PersonLocal { get; set; }
    }

    public class Person_Local
    {
        //[NotMapped()]
        [Key, Column(Order = 1)]
        [ForeignKey("Person")]
        public int PersonID { get; set; }

        [Key, Column(Order = 2)]
        [ForeignKey("Culture")]
        public int CultureID { get; set; }

        public string PersonName { get; set; }

        public string PersonFamily { get; set; }

        public string PersonAbout { get; set; }

        public virtual Culture Culture { get; set; }

        public virtual Person Person { get; set; }
    }

У меня нет проблем с добавлением нового человека и персонажа в базу данных.Но когда я хочу обновить человека локально, как показано ниже:

public ActionResult CreatePerson([Bind(Prefix = "Person")]Person obj,
            [Bind(Prefix = "Person.PersonLocal")]IEnumerable<Person_Local> plocals)
        {
            string photo_guid = obj.PersonPicAddress;

            if (obj.PersonID != 0)
            {
                Person p = da.Persons.FirstOrDefault(x => x.PersonID == obj.PersonID);

                TryUpdateModel(p, "Person");

                if (obj.PersonLocal[0].Person.PersonID != 0)
                {
                    int cid = obj.PersonLocal[0].Culture.CultureID;
                    int pid = obj.PersonLocal[0].Person.PersonID;

                    Person_Local ploc = 
                                      da.Person_Locals.First(x => x.CultureID == cid      && x.PersonID == pid);



                   //update ploc 


                 }

                 da.SaveChanges();
          }
}

Я получил следующую ошибку:

Нарушено ограничение множественности.Роль «Person_Local_Person_Target» отношения «WebApp.Models.Person_Local_Person» имеет кратность 1 или 0.Кажется, проблема была решена? !!Почему?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...