我对此错误感到生气并无法解决。 请一些绝地大师帮助我。
我正在尝试保存实体:Region,Content和RegionalContent。区域是可以的,但区域内容必须与一个内容相关联,每个内容可能有许多RegionalContents(翻译)。但是我总是得到一个DbUpdateException,它有一个UpdateException,它有一个SqlCeException,类似于:
*无法插入具有相同索引的重复值。表名= XBLContents,约束名= PK_ XBLContents _000000000000001C *
我正在调试它几天,但找不到错误。请注意,我还是一个Padawan。
这是将对象保存在正确的表中的代码:
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);
}
答案 0 :(得分:1)
SingleOrDefault
。只需使用Single
。SaveChanges
叫到最后。