2009-05-22 11 views
10

In Linq To Sql, beim Aktualisieren einer meiner Entitäten, Faculty, ich eine neue Instanz des Faculty-Objekts erstellen, dann Initialisierung einige der Eigenschaften mit Werten vom Benutzer zur Verfügung gestellt .Linq To SQL Objekt anhängen/aktualisieren Objekt

Wenn ich dieses neue Objekt an den Entitätssatz anhefte und Änderungen übergebe, nehmen die Eigenschaften, die ich nicht festgelegt habe, den Standardwert von welchem ​​Datentyp auch immer an.

Wie kann ich das neue Objekt aktualisieren, so dass die Eigenschaften, die festgelegt wurden, ihre Werte beibehalten und die Eigenschaften, die nicht festgelegt wurden, die Werte aus der Datenbank abrufen?

Dank

+0

nur aus Neugier, sind die Null-Typen "GUID"? – vidalsasoon

+0

Nein, sie sind ganze Zahlen –

Antwort

14

Versuchen Sie

context.Refresh(RefreshMode.OverwriteCurrentValues, faculty);

nach Änderungen zu unterbreiten, zu denen context Ihre linq2sql Datacontext und faculty wird das Objekt, das Sie aktualisieren mögen?

+0

Ich habe bemerkt, dass es auch 'yourBindingSource.ResetCurrentItem();' erforderlich ist, wenn Sie die Entität außerhalb des 'CurrentChanged'-Ereignisses der Bindungsquelle aktualisieren. – Dor

0

Was ist das Objekt aus der Datenbank abrufen, dann die entsprechenden Werte ändern, dann das Update einreichen?

+0

Ich behalte einige Code, der die attach-Methode verwendet, und ich bin mir nicht ganz sicher, warum es nicht geschrieben wurde zu tun, was Sie vorschlagen, mit zu beginnen. –

+0

Ich denke, er bezieht sich auf das Erstellen eines neuen Eintrags in einer Tabelle. – vidalsasoon

+0

Oh! Jetzt erinnere ich mich. Das liegt daran, dass es ein Zeitstempelfeld namens version gibt. Wenn Sie das tun, was Sie vorgeschlagen haben, wird dieser Fehler ausgegeben: Wert des Mitglieds 'Version' eines Objekts vom Typ 'Fakultät' wurde geändert. Ein Element, das von der Datenbank berechnet oder generiert wird, kann nicht geändert werden. –