GUID COMB-Strategie in EF

8

Gibt es eine Möglichkeit, die Guid-COMB-Identitätsstrategie für Objekte im neuen Entity Framework 4.1 mithilfe des CodeFirst-Designs zu implementieren? Ich dachte, die StoreGeneratedPattern würde funktionieren, aber es gibt mir immer noch normale GUIDs.

    
Ciel 23.05.2011, 14:57
quelle

3 Antworten

8

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%     
Ladislav Mrnka 23.05.2011, 17:20
quelle
14

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.

    
Thomas 23.05.2011 17:36
quelle
2

Die einfachste Antwort

%Vor%

Dies setzt voraus, dass Ihre Datenbanktabelle den Standardwert newsequentialid() hat, der in meinem Fall von FluentMigrator-Migrationen verwaltet wird.

    
Chris Marisic 17.08.2011 20:10
quelle