In meinem Kontext lösche ich eine der bestehenden Entitäten. Und im selben Kontext versuche ich eine neue Entität mit dem folgenden Code hinzuzufügen:
if (entity != null && EFContext.Entry(entity).State == EntityState.Detached)
{
try
{
var entityName = entity.GetType().Name;
GetObjectContext.AddObject(entityName + "s", entity);
}
catch (Exception ex)
{
log(ex);
throw;
}
}
Das Problem, das ich habe, ist, wenn ich die neu erstellte Entität an die obige Methode übergeben, wenn es den Entitätsstatus überprüft, gibt es Ausnahme: *
Das Hinzufügen einer Beziehung zu einer Entität, die sich im Status Gelöscht befindet, ist nicht zulässig
Ich habe mit der gelöschten Entität keine Beziehung hergestellt, warum würde sie diese Ausnahme auslösen? Ich versuche, das Problem in einem anderen einfachen Projekt zu reproduzieren, kann es aber nicht reproduzieren. Weiß jemand, warum würde EF diese Ausnahme werfen?
UPDATE: Ich habe Student und eine Rucksack-Einheit. Rucksack verweist auf den Schüler (eins zu viele). In meinem Fall lösche ich einen der Rucksäcke und versuche, eine neue Studenteneinheit zu erstellen. Und wenn ich den Objektzustand überprüfe, erhalte ich die Ausnahme oben.
EFContext.Entry (Entität) fügt die Entität zu diesem Zeitpunkt dem Kontext hinzu.
Wahrscheinlich ist das Problem hier, dass der Rucksack, den du gelöscht hast, einen FK auf 0 gesetzt hat, nachdem er gelöscht wurde oder so? Wenn dies der Fall ist, würde der gelöschte Ordner beim Hinzufügen dieses neuen Schülers im Kontext dieses neuen Schülers stehen, da er noch die ID 0 hätte. Versuchen Sie als temporären Fix, den PK dieses neuen Schülers auf -1 zu setzen, bevor Sie Entry (entity) aufrufen und sehen Sie, ob das etwas bewirkt.