2012-04-07 7 views
0

Ich habe eine Eltern-Gridview und eine Detail-Gridview, ich kann die Eltern-Gridview einfügen/aktualisieren/löschen. Ich kann neue Datensätze in die Detailrasteransichten einfügen. Aber ich kann keine der Datensätze in den Detailrasteransichten aktualisieren/löschen. Ich erhalte die folgende Ausnahme.ASPxGridview Master-Detail - EntityDatasource, Nebenläufigkeit Ausnahme immer

Die Aktualisierung, Einfügung oder Löschung einer Anweisung zum Speichern von Dateien hat eine unerwartete Anzahl von Zeilen (0) betroffen. Entitäten wurden möglicherweise geändert oder gelöscht, seit Entitäten geladen wurden. Aktualisieren Sie die ObjectStateManager-Einträge.

Ich weiß, das ist nicht möglich, weil ich der einzige bin, der diesen Datensatz bearbeitet.

Wie kann ich das beheben?

Antwort

0

Vor allem, wenn Sie etwas falsch mit bind tun, dann hat diese wie folgt vor:
How to implement common scenarios when using the ASPxGridView component/MVC GridView Extension bound with EntityDataSource/Entity Framework

Wenn alles es richtig, dann in die Speicherung der Daten Entity Framework Problem ist, wird zum Zeitpunkt der Lösch falsch weitergegeben oder Aktualisierungsvorgang Wie ich erkundet habe, ist dies, weil das ID (Schlüssel) Feld der Entity nicht gesetzt ist. Wenn der Kontext zum Speichern der Daten verwendet wird, konnte kein Primärschlüsselfeld = 0 gefunden werden. Stellen Sie sicher, dass Sie in Ihrer Aktualisierungsanweisung einen Haltepunkt platzieren, und vergewissern Sie sich, dass die ID der Entität festgelegt wurde.

Wie ich denke, versuchen, die KeyFieldName = "KeyFieldName" des Detail Raster einzustellen. Es sollte dein Problem lösen.

Folgen Sie diesen Links Referenz:
Entity Framework: "Store update, insert, or delete statement affected an unexpected number of rows (0)."

http://smisro.blogspot.in/2010/04/store-update-insert-or-delete-statement.html
Kevin McNeish solution on this

Ref: DevExpress Master Detail Example

+0

das ist ganz in der Nähe zu dem, was passiert ist, ich bin nicht angezeigt eine der foreignkey ids, da dies der Master Detailbeziehungs-ID Ich habe dies als eine versteckte Spalte in der Gridview eingefügt, die das behebt, aber jetzt ist die Versionsspalte bei der Aktualisierung null, was bedeutet, dass ich das ebenfalls einschließen sollte, aber ich bin mir nicht sicher, was der Spaltentyp sein sollte. – keyoke

0

Ok ich die Antwort gefunden, nicht die zusätzliche Spalte für die Version benötigen, aber habe zwei Support-Probleme gemischt, die ich auf der DEVEXPRESS-Seite gefunden habe, und folgendes herausgefunden.

protected void gvPackages_RowUpdating(object sender, ASPxDataUpdatingEventArgs e) 
    { 
     e.OldValues["Version"] = GetVersionField(sender as ASPxGridView); 
    } 

    Byte[] GetVersionField(ASPxGridView grid) 
    { 
     return grid.GetRowValues(grid.EditingRowVisibleIndex, "Version") as Byte[]; 
    } 

, die großen Werke, das zusammen mit der foreignkey-ID bedeutet, dass es funktioniert nun wie erwartet