Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie stelle ich sicher, dass Linq to Sql DB-Standardwerte ohne Nullwerte nicht überschreibt oder verletzt?

Von Linq-To-Sql generierte Klassen übernehmen die Standardwert-Constriants nicht.

Vielleicht in der Zukunft, aber das Problem ist, dass Einschränkungen nicht immer einfache Werte sind, sie können auch skalare Funktionen wie GetDate() sein , also müsste linq irgendwie wissen, wie man diese übersetzt. Kurz gesagt, es wird nicht einmal versucht. Es ist auch eine sehr datenbankspezifische Sache.

  • Sie könnten einen Codegenerator schreiben, um partielle Entitätsklassen zu erstellen, aus denen Sie den Standardwert constriant extrahieren können.
  • Alternativ könnte Ihr Business-Layer-Code die Standardwerte in Konstruktoren aus einer XML-Datei festlegen, und alles, was Sie tun müssen, ist, die XML-Datei auf dem neuesten Stand zu halten.
  • Anstatt die Arbeit in Konstruktoren zu erledigen, könnten Sie SQL emulieren und Standardwerte hinzufügen, indem Sie das ChangeSet überprüfen, bevor Sie Änderungen an die Datenbank übermitteln.

Das Problem, das Sie haben, wird ausführlich in CodeProject - Setting Default Values ​​for LINQ Bound Data beschrieben