VS2005 / VS2008 DataSet Designer, legen eine Zeile in einer Tabelle, die eine automatisch generierte GUID Spalte

StackOverflow https://stackoverflow.com/questions/806590

Frage

Ich habe eine stark typisierte Datatable mit dem VS2005 / VS2008 DataSet-Designer erstellt.

Die Tabelle hat eine Primärschlüsselspalte, die ein GUID ist, die von SQL Server bevölkert wird. Das Problem ist, wenn ich eine Zeile hinzufügen möchten (oder mehrere Zeilen) auf meine Datatable und dann rufen Sie die DataAdapter.Update Methode (in der Datentabelle vorbei). Wenn DataAdapter.Update genannt wird, erhalte ich eine SQL-Ausnahme, dass ich sagen kann nicht NULL in die Primärschlüsselspalte einfügen.

Wie kann ich feststellen, den Designer, dass dies eine automatisch generierte Spalte ist, und ich will keinen Wert für neue Zeilen zur Verfügung zu stellen? Ich möchte nur den von SQL generierten Wert.

Bin ich etwas fehlt hier, oder ist dies eine Einschränkung des DataSet-Designer?

Ich weiß, wie diese LINQ to SQL verwenden erreichen, aber leider ist ich habe es nicht zu meiner Verfügung für dieses Projekt.

War es hilfreich?

Lösung

Möglicherweise einer der folgenden:

  • Wenn Sie die Spalte in Ihrem Datensatz für Ihre App nicht benötigen, dann nehmen Sie es.
  • Wenn Sie die Spalte wollen, aber egal, es um einen Wert zu geben, dann DBNull ermöglichen ändern.
  • Sie können immer Randbedingungserzwingung ausschalten (wahrscheinlich eine schlechte Idee): DataSet.EnforceConstraints = false
  • Sie können die Säule mit einem Ersatzschlüssel füllen, die nicht auf die DB geschickt bekommen.

Für die ersten beiden Optionen, wenn Sie die Bequemlichkeit der Vermietung der Designer Ihre Struktur synchron halten möchten mit Ihrer Datenbank, dann könnten Sie die Spalte entfernen oder null programmatisch erlauben, vielleicht direkt neben einem „// HACK:“ Kommentar warum zu erklären.

Andere Tipps

Sie verwenden problably STANDARD NEWID () auf Ihrem Server Tabellendefinition SQL so das Problem, dass der Datensatz Designer nicht diese Spalte als automatisch generierte sieht sein kann.

Vielleicht im Anwendungscode guid Erzeugen könnte eine Lösung sein? Wenn nicht, dann könnten Sie Standardwert in Sie Datensatz gesetzt, aber dann sind Sie wahrscheinlich auch Dataadapter Insert / Update-Anweisungen ändern, so dass dieser Standardwert in der Tabelle SQL Server nicht eingesetzt bekommt.

könnte es auch eine andere Lösung sein, die ich bin mir nicht bewusst ...

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