Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 更新记录会在asp.net mvc中引发“违反多重性约束”_Asp.net Mvc 3_Entity Framework 4 - Fatal编程技术网

Asp.net mvc 3 更新记录会在asp.net mvc中引发“违反多重性约束”

Asp.net mvc 3 更新记录会在asp.net mvc中引发“违反多重性约束”,asp.net-mvc-3,entity-framework-4,Asp.net Mvc 3,Entity Framework 4,我正在asp.net mvc中开发一个应用程序,并首先使用EF代码进行数据访问。以下是我使用的模型: public class Culture { [Key()] public int CultureID { get; set; } [Required()] [StringLength(250)] public string CultureName { get; set; } [Req

我正在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; }
    }

看来问题已经解决了?!!为什么

看起来你的多重性映射得很糟糕。检查您的edmx以确认。我很好奇,你需要你的关系和对象中的FK吗?这关系还不够?@ivowiblo,去edmx看看什么?是的,我需要这两个,因为当客户想要进入一个新的本地人时,他/她应该确定文化和人。客户端可以识别一个人,并具有多语言的个人详细信息,如果需要,可以使用person_localI mean在对象中显示人物关系和人物标识FK。我以为EF在内部处理FK。也许你没有使用EF4。你的意思是我应该从PersonLocal中删除PersonID和CultureId?我使用的是EF版本4.1.0.0。当我从personlocal中删除它们并运行应用程序时,它抛出:EntityType“Person\u Local”没有定义键。定义此实体类型的键您似乎选中了在模型中包含外键。无论如何,这不应该是问题所在。检查这个:看起来你的多重性映射得很糟糕。检查您的edmx以确认。我很好奇,你需要你的关系和对象中的FK吗?这关系还不够?@ivowiblo,去edmx看看什么?是的,我需要这两个,因为当客户想要进入一个新的本地人时,他/她应该确定文化和人。客户端可以识别一个人,并具有多语言的个人详细信息,如果需要,可以使用person_localI mean在对象中显示人物关系和人物标识FK。我以为EF在内部处理FK。也许你没有使用EF4。你的意思是我应该从PersonLocal中删除PersonID和CultureId?我使用的是EF版本4.1.0.0。当我从personlocal中删除它们并运行应用程序时,它抛出:EntityType“Person\u Local”没有定义键。定义此实体类型的键您似乎选中了在模型中包含外键。无论如何,这不应该是问题所在。选中此项:
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();
          }
}
TryUpdateModel(p, "Person");