Я получаю сообщение об ошибке первичного ключа со следующим кодом. Я не могу понять, почему это может быть, и мне нужно разобраться. Может ли кто-нибудь помочь с новыми парами глаз?Ошибка обновления Entity Framework
var events = (from e in nodes.Descendants("event")
select new Event
{
Event_ID = int.Parse(e.Attribute("event_id").Value),
Name = e.Attribute("name").Value,
Code = e.Attribute("code").Value,
Minute = e.Attribute("minute").Value != String.Empty ? int.Parse(e.Attribute("minute").Value) : 0,
Minute_Extra = e.Attribute("minute_extra").Value != String.Empty ? int.Parse(e.Attribute("minute_extra").Value) : 0,
Team = GetTeam(e.Attribute("team_id")),
Last_Updated = DateTime.Parse((FormatDateTime(e.Attribute("last_updated").Value)))
});
foreach (Event matchEvent in events)
{
//Check to see if this event exists
if (match.Events.Any(o => o.Event_ID == matchEvent.Event_ID))
{
Event theEvent = (from m in match.Events
where m.Event_ID == matchEvent.Event_ID
select m).FirstOrDefault();
//There is an event with this ID, so check its last updated flag
if (theEvent.Last_Updated < matchEvent.Last_Updated)
{
//Update the current event
theEvent.Event_ID = matchEvent.Event_ID;
theEvent.Name = matchEvent.Name;
theEvent.Code = matchEvent.Code;
theEvent.Minute = matchEvent.Minute;
theEvent.Minute_Extra = matchEvent.Minute_Extra;
theEvent.Team = matchEvent.Team;
theEvent.Last_Updated = matchEvent.Last_Updated;
}
}
//If the event is not there we need to add it
else
{
match.Events.Add(matchEvent);
}
myDb.SaveChanges();
UPDATE 1: Ниже ошибка я получаю, когда SaveChanges() называется:
{"Violation of PRIMARY KEY constraint 'PK_Matches_1'. Cannot insert duplicate key in object 'dbo.Matches'.\r\nThe statement has been terminated."}
UPDATE 2: Я не использую вставку идентичности на столе DB для этого, так как это это импорт из сторонней веб-службы, где мне нужно сохранить все идентификаторы. Я не уверен, повлияет ли это на процесс обновления с помощью инфраструктуры сущностей?
UPDATE 3: Хорошо, когда я включаю идентификационную вставку, обновление успешно, однако я не хочу иметь вставку indentity в этой таблице, поскольку идентификаторы передаются из WebService, и мне нужно сохранить эти идентификаторы.
Какая строка является ошибкой? Имеет ли ошибка сообщение в сообщении, которое может быть полезным? –
Не так просто, что вы забыли отметить PK-свойство как «Auto Generated»? – Ozzy
PK в этом случае не генерируется автоматически, может быть, это моя проблема? Это в основном выполняется импорт из веб-службы третьей стороны, где идентификаторы уже указаны? – Kevin