Ich verwende Linq zu SQL in meiner Datenschicht, wo ich eine "Einstellungen" -Tabelle der regulären asp_user Tabelle hinzugefügt haben. In dieser Einstellungstabelle behalte ich mehrere Datensätze, welche die bevorzugte Einheit ist (ein Fremdschlüssel für die Units-Tabelle).Linq zu Sql Update erstellt doppelten Datensatz
Jetzt, wenn diese bevorzugte Einheit geändert werden muss (sagen wir von Liter zu Kilogramm), rufe ich meinen UnitService an, um die richtige Einheitsinstanz zu erhalten und setze meine Einstellung .PreferedUnit auf diese Instanz. Dies erstellt ein neues (doppeltes) Element in der Datenbank (in meiner Units-Tabelle befinden sich jetzt zwei Kilogramm Datensätze). Das ist natürlich nicht das, was ich beabsichtigt habe.
Ich habe das Gefühl, dass ich ein paar grundlegende Dinge falsch mache
UserSetting setting = AccountService.GetUserSetting(user.Identity.Name);
if (setting.PreferedUnitId != unitId)
setting.Unit = UnitService.GetUnitById(unitId);
AccountService.SaveuserSetting(setting);
Ja, du hast Recht. Das wird es wahrscheinlich reparieren. –