Frage

Gibt es einen Grund so etwas wie dies funktionieren würde, nicht wahr?

Das ist die Logik, die ich viele Male verwendet habe, einen Datensatz in einer Tabelle mit LINQ zu aktualisieren:

 DataClasses1DataContext db = new DataClasses1DataContext();
 User updateUser = db.Users.Single(e => e.user == user);
 updateUser.InUse = !updateUser.InUse;
 db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true };
 db.SubmitChanges();

(updateUser.InUse ist ein Bit-Feld)

Aus irgendeinem Grund ist es nicht funktioniert. Wenn ich die linq.log überprüfen ist es völlig leer.

Könnte es ein Problem mit meinem .dbml sein? Andere Tabellen scheinen gut zu funktionieren, aber ich habe im Vergleich Objekte im .dbml und sie alle übereinstimmen.

Es ist, als ob der db.SubmitChanges(); erkennt keine Updates erforderlich ist.

War es hilfreich?

Lösung

Die Tabelle kann nicht richtig aktualisiert werden, da es keinen Primärschlüssel hatte. (Eigentlich hatte es die Spalte aber die Einschränkung kopiert wurde nicht, wenn ich eine SELECT INTO meine dev Tabelle tat). Die Datacontext-Klasse benötigt einen Primärschlüssel für Updates.

Andere Tipps

Ist die InUse Eigenschaft eine „normale“ eine so weit wie LINQ ist betroffen? (Zum Beispiel ist es nicht automatisch generiert oder etwas flippig wie das?)

Alternativ Ich nehme nicht an, es ist ein Nullable ist es, mit einem aktuellen Wert von null? Wenn ja, wird die Update Linie nicht wirklich etwas zu tun -. Für Nullable-Booleans, null = null

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top