2017-02-13 3 views
2

私たちは少なくとも半分のテーブルの識別子としてGuidを使用します。他の表では、より自然な識別子を使用して、自然なクラスタード・インデックスから利益を得ることができます。私たちは、Guidsの使用はシーケンシャルではないので、データベースで多くのオーバーヘッドを引き起こすことに気付きました。CodeFluentのシーケンシャルGUID

CodefluentでSequential Guidsを実装した人はいますか?あなたのアプローチやコードを共有できますか?

+0

"シーケンシャルGUIDは" 矛盾です。そうではありません。 – Gustav

+0

Gustav、シーケンシャルガイドについては多くのドキュメントがあります。たとえば、http://www.siepman.nl/blog/post/2013/10/28/ID-Sequential-Guid-COMB-Vs-Int-Identity-using-Entity-Framework.aspxを参照してください。 –

+1

ありがとう、それについて知らなかった。 _SQL Server_スペシャルと思われるので、質問に_SQL Server_タグを追加しました。 – Gustav

答えて

2

UuidCreateSequentialで新しいシーケンシャルGUIDをC#で生成し、それをコンストラクタのプロパティ(OnAfterCreateルール)に割り当てることができます。

CodeFluentエンティティモデル:

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

はシーケンシャルGUIDを生成するために、カスタムコード:

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

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

ありがとうmeziantou、それは私が探していたものです! –

+0

@PeterdeBruijn - これは大きく変わることはありません。改善する必要があります:https://blogs.msdn.microsoft.com/dbrowne/2012/07/03/how-to-generate-sequential-guids-for- sql-server-in-net /とにかく、ある期間にわたって、そして異なるマシンからどのように「シーケンシャル」になるのか分かりません。 「連続性」が必要な場合は、アイデンティティを使用する必要があります。 –