Ich habe eine SQL Server 2008-Datenbanktabelle, die Uniqueidentifier als Primärschlüssel verwendet. Bei Einfügungen wird der Schlüssel auf der Datenbankseite mithilfe der Funktion newid() generiert.Entity Framework - SaveChanges mit GUID als EntityKey
Dies funktioniert gut mit ADO.NET. Aber wenn ich diese Tabelle als Entität in einem Entity Framework 4-Modell aufstelle, gibt es ein Problem. Ich bin in der Lage, die Entität gut abzufragen, aber beim Erstellen einer neuen Entität und dem Aufruf von SaveChanges() für den Kontext ist der generierte Uniqueidentifier in der Datenbank nur Nullen.
Ich verstehe, es gab ein Problem mit EF V1, wo dieses Szenario nicht funktionierte, die Erstellung der GUID auf dem Client vor dem Aufruf SaveChanges. Allerdings hatte ich an vielen Stellen gelesen, dass sie vorhatten, dies in EF 4 zu beheben.
Meine Frage - wird dieses Szenario (DB-Seitengenerierung von uniqueidentifier) immer noch nicht in EF4 unterstützt? Sind wir immer noch dabei, die GUID auf dem Client zu generieren?
Nur aus Neugier, warum fühlen Sie sich auf dem Client „stecken“ mit Erzeugen der GUID sind? Dies ist der primäre Vorteil von uniqueidentifier, IMO. Wenn Sie IDs auf dem Server generieren möchten, verwenden Sie einfach einen Autoinkrement-Schlüssel. – MusiGenesis
Großer Spitzname, übrigens. :) – MusiGenesis
@MusiGenesis, 1. MissingLinq will einen automatisch generierten Schlüssel, nur nicht ein int (vielleicht weil sie mehr begrenzte Bereiche haben). 2. Der Punkt der Datenbank generierten Schlüssel ist die Beseitigung von Kollisionen, mit einer GUID die Chance, die kann 1/2^128 sein, aber warum nicht lassen Sie die Datenbank tun, und lassen Sie den Client-Code nur sorgen über die Schaffung der Entitäten und nicht über Datenbankschlüssel. –