我对这个错误感到愤怒,无法解决它。 请一些绝地高手帮助我。EF重复值
我试图保存trhee实体:Region,Content和RegionalContent。地区是好的,但区域内容必须与一个内容相关联,每个内容可能有许多RegionalContents(翻译)。但我总是得到一个DbUpdateException,它有一个UpdateException异常,它有一个SqlCeException异常,如下所示:
*无法插入具有相同索引的重复值。表名= XBLContents,约束名= PK_ XBLContents _000000000000001C *
我正在调试它几天,并找不到错误。请注意,我还是一个小Padawan。
这是在他们正确的表保存对象的代码:要调用SingleOrDefault
当你知道1已经存在
Region region;
if (!db.Regions.Any(x => x.ID == Locale))
{
region = new Region { ID = Locale };
db.Regions.Add(region);
db.SaveChanges();
}
else
region = db.Regions.SingleOrDefault(x => x.ID == Locale);
for (int i = start; i < (start + 2); i++)
{
string guid = itens[i].Groups["guid"].Value;
Content c = new Content(guid);
if (!db.Contents.Any(x => x.GUID == guid))
{
c.Type = Type.ToString();
c.PopularInfo(Locale);
db.Contents.Add(c);
}
else
c = db.Contents.SingleOrDefault(x => x.GUID == c.GUID);
RegionalContent regionalcontent;
if (!db.RegionalInfos.Any(x => x.ContentId == guid && x.RegionId == Locale))
{
if (c.HTML == null)
c.PopularInfo(Locale);
regionalcontent = new RegionalContent(c, Locale);
regionalcontent.Region = region;
regionalcontent.Name = HttpUtility.HtmlDecode(itens[i].Groups["name"].Value);
db.RegionalInfos.Add(regionalcontent);
db.Contents.Add(c);
db.SaveChanges();
}
else
regionalcontent = db.RegionalInfos.SingleOrDefault(x => x.ContentId == guid && x.RegionId == Locale);
c.RegionalInfo.Clear();
regionalcontent.Region = region;
c.RegionalInfo.Add(regionalcontent);
Contents.Add(c);
}
是最后一行'Contents.Add(c);'correct?不应该是'db.Contents.Add(c);'? – Eranga
这是正确的。这是一个本地List,可以传递给View。我填充列表在这里因为外部我没有DbContext对象。我将此列表作为IEnumerable发送到视图 –
programad