Asp.net mvc 3 更新记录会在asp.net mvc中引发“违反多重性约束”
我正在asp.net mvc中开发一个应用程序,并首先使用EF代码进行数据访问。以下是我使用的模型: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
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");