Ich nehme an, dass Sie SQL Server als Ihre Datenbank verwenden. Dies ist ein schönes Beispiel für Inkonsistenz zwischen verschiedenen MS-Tools. Das SQL Server-Team empfiehlt nicht, newid()
als Standardwert für UNIQUEIDENTIFIER
-Spalten zu verwenden, und das ADO.NET-Team verwendet es, wenn Sie die Eigenschaft Guid
als automatisch generiert in der Datenbank angeben. Sie sollten stattdessen newsequentialid()
verwenden!
Wenn sequentielle Guids von der Datenbank erzeugt werden sollen, müssen Sie die generierte Tabelle modifizieren, und das ist sehr komplex, da Sie die automatisch generierte Standardbedingung finden müssen, sie löschen und eine neue Integritätsregel erstellen müssen. Dies alles kann im benutzerdefinierten Datenbankinitialisierer durchgeführt werden. Hier haben Sie meinen Beispielcode:
%Vor%Warum sollten Sie sich über die Standardeinstellungen für GUID-Spalten in der Datenbank Sorgen machen? Warum generieren Sie Guid nicht einfach auf dem Client wie bei jedem anderen Wert? Das erfordert, dass Sie eine Methode in Ihrem Client-Code haben, der COMB-like guids generiert:
%Vor%Einer der Vorteile von Guid ist speziell, dass Sie sie auf dem Client generieren können, ohne einen Rundgang in die Datenbank zu machen.
Die einfachste Antwort
%Vor% Dies setzt voraus, dass Ihre Datenbanktabelle den Standardwert newsequentialid()
hat, der in meinem Fall von FluentMigrator-Migrationen verwaltet wird.
Tags und Links c# entity-framework guid ef-migrations newsequentialid