Ich habe in meiner Datenbank eine Tabelle von Services und eine Tabelle von BodyAreas. Sie sind durch eine Beziehung vieler zu vielen verbunden. Hier versuche ich, Dienste aus einer CSV zu laden, in der ich auch die zugehörigen BodyAreas habe.Verletzung der PRIMARY KEY-Einschränkung 'PK_dbo.ServiceBodyAreas'. Kann keinen doppelten Schlüssel in Objekt 'dbo.ServiceBodyAreas' einfügen
var record = reader.GetRecord<ServiceModel>();
service.Name = record.Service;
service.Code = record.ID;
service.Description = record.Description;
service.Price = decimal.Parse(record.Price_Uninsured);
service.Specialties = new[]
{
context.Specialties.FirstOrDefault(b => b.Name == record.Category),
};
service.ServiceType = serviceType;
service.BodyAreas = new List<BodyArea>();
string[] items = record.Body_Areas.Split(new char[] { ',' });
foreach (var item in items)
{
BodyArea bA = context.BodyAreas.Single(x => x.Name == item);
if (bA != null)
{
service.BodyAreas.Add(bA);
}
}
var entry = context.Entry(service);
if (entry.State == EntityState.Unchanged)
entry.CurrentValues.SetValues(service);
else
context.Services.Add(service);
Aber wenn ich die Update-Datenbank Befehl aus dem Paket-Manager-Konsole ausführen bekomme ich diesen Fehler:
InnerException = {"Violation of PRIMARY KEY constraint 'PK_dbo.ServiceBodyAreas'. Cannot insert duplicate key in object 'dbo.ServiceBodyAreas'. The duplicate key value is (1, 17).\r\nThe statement has been terminated."}
hoffe dein Body_Areas hat kein doppeltes Element – techspider
vielen Dank Mann. Ich fühle mich jetzt sehr dumm –