Я злюсь на эту ошибку и не могу ее исправить.
Пожалуйста, помогите мне немного мастера-джедая.
Я пытаюсь сохранить сущности: Регион, Контент и Региональный контент. Регион в порядке, но региональный контент должен быть связан с одним контентом, и каждый контент может иметь много региональных контентов (переводов). Но я всегда получаю DbUpdateException, у которого есть UpdateException, у которого есть SqlCeException, который говорит что-то вроде:
* Невозможно вставить дублированное значение с тем же индексом. Имя таблицы = XBLContents, Имя ограничения = PK_ XBLContents _000000000000001C *
Я отлаживаю его несколько дней и не могу найти ошибку. Пожалуйста, обратите внимание, что я все еще маленький падаван.
Это код, который сохраняет объекты в соответствующих таблицах:
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);
}