2017-02-13 8 views
2

Wir verwenden Guid als Identifikatoren für mindestens die Hälfte unserer Tabellen. Für die anderen Tabellen könnten mehr 'natürliche' Identifikatoren verwendet werden, so dass wir von einem natürlichen gruppierten Index profitieren könnten. Wir haben festgestellt, dass die Verwendung der Guids einen hohen Aufwand in der Datenbank verursacht, da sie nicht sequenziell sind.Sequentielle GUIDs in CodeFluent

Hat jemand Sequential Guids in Codefluent implementiert oder versucht? Können Sie Ihren Ansatz und/oder Code teilen?

+0

A "Sequential Guid" ist ein Widerspruch. Also nein. – Gustav

+0

Gustav, es gibt eine Menge Dokumentation über sequentielle Guids. Bitte lesen Sie zum Beispiel http://www.siepman.nl/blog/post/2013/10/28/ID-Sequential-Guid-COMB-Vs-Int-Identity-using-Entity-Framework.aspx. –

+1

Danke, wusste nicht darüber. Scheint ein _SQL Server_ Special zu sein, also habe ich das _SQL Server_ Tag zu Ihrer Frage hinzugefügt. – Gustav

Antwort

2

Sie können eine neue sequenzielle GUID in C# mit UuidCreateSequential generieren und der Eigenschaft im Konstruktor zuweisen (OnAfterCreate Regel).

Die CodeFluent Entities Modell:

<cf:entity name="Customer"> 
    <cf:property name="Id" cfom:newGuidOnNew="false" key="true" /> 
    <cf:property name="Name" /> 
    <cf:rule typeName="OnAfterCreate" /> 
</cf:entity> 

Der individuelle Code einen Sequential GUID zu generieren:

partial class Customer 
{ 
    void OnAfterCreate() 
    { 
     Id = SequentialGuid.NewGuid(); 
    } 
} 

static class SequentialGuid 
{ 
    [DllImport("rpcrt4.dll", EntryPoint = "UuidCreateSequential")] 
    public static extern Guid NewGuid(); 
} 
+0

Danke meziantou, das ist, was ich gesucht habe! –

+0

@PeterdeBruijn - Dies wird nicht viel ändern, es muss verbessert werden: https://blogs.msdn.microsoft.com/dbrowne/2012/07/03/how-to-generate-sequential-guids-for- sql-server-in-net/aber trotzdem sehe ich nicht, wie es über einen gewissen Zeitraum hinweg "sequentiell" sein wird und von verschiedenen Rechnern. Wenn man "Sequentialität" braucht, muss man Identity Guides verwenden –