2016-03-30 6 views
1

Ich versuche insert mit EF und pasing alle Parameter, aber immer noch aus irgendeinem Grund bekomme ich Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries. Fehler.Speichern Update, Einfügen oder Löschen von Anweisung betroffen eine unerwartete Anzahl von Zeilen (0) nach context.refresh()

Ich schaute in Solution for: Store update, insert, or delete statement affected an unexpected number of rows (0) und dbcontext does not contain a definition for 'Refresh' aber immer noch bekomme ich den Fehler.

Ich habe versucht, folgende Ansätze:

foreach (var mainItemDeliveryTag in mainItemDeliveryTagList) 
{ 
    try 
    { //Option-1 
     var mainItemTag = DataContext.Set<MainItemDeliveryTag>(); 
     mainItemTag.Add(new MainItemDeliveryTag { MainItemID = mainItemId, DeliveryProviderTagID = mainItemDeliveryTag.DeliveryProviderTagID, IsDeliveryTagSelected = mainItemDeliveryTag.IsDeliveryTagSelected }); 

     //Option-2 
     var mainItemDeliveryTagObj = new MainItemDeliveryTag() 
     { 
      MainItemID = mainItemId, 
      DeliveryProviderTagID = mainItemDeliveryTag.DeliveryProviderTagID, 
      IsDeliveryTagSelected = mainItemDeliveryTag.IsDeliveryTagSelected, 
     }; 
     DataContext.MainItemDeliveryTag.Add(mainItemDeliveryTagObj); 

     //Option-3 
     DataContext.Entry(mainItemDeliveryTag).State = System.Data.Entity.EntityState.Added; 

     DataContext.SaveChanges(); 
    } 
    catch (OptimisticConcurrencyException) 
    { 
     var ctx = ((IObjectContextAdapter)DataContext).ObjectContext; 
     ctx.Refresh(RefreshMode.ClientWins, mainItemDeliveryTag); 
     DataContext.SaveChanges(); 
    } 
} 

Was soll ich hier fehlt?

+0

Zunächst: Verwendung Option-2, aber bewegen Savechanges() außerhalb der Schleife aufrufen. Was ist die HauptItemId? Ist es der Primärschlüssel für diese Tabelle? Können Sie uns sagen, wo Sie Ihren DataContext erstellen? –

+0

MainItemId ist kein Primärschlüssel. Es ist nur, um einen Wert mit der ID – CSharper

+0

@MarcinIwanowski zu assoziieren Ich hatte keine Auto-Inkrement-Spalte in meiner Tabelle, so EF konnte nicht Datensätze einfügen. Ich habe eine Spalte mit Autoinkrement hinzugefügt und denselben Code ausgeführt. Es fing an zu arbeiten. – CSharper

Antwort

0

Zuvor hatte meine Tabelle keine Spalte mit automatischem Inkrementwert. Ich habe eine neue Spalte mit Autoinkrement hinzugefügt und kann jetzt Datensätze einfügen.

Old Table Structure:

enter image description here

New Tabellenstruktur:

enter image description here

Verwandte Themen