我對這個錯誤感到憤怒,無法解決它。 請一些絕地高手幫助我。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