我們使用Guid's作爲至少一半表格的標識符。對於其他表格,可以使用更多「自然」標識符,以便我們可以從自然聚集索引中獲益。我們注意到Guids的使用在數據庫中導致了很多開銷,因爲它們不是順序的。CodeFluent中的順序GUID
有沒有人在Codefluent中實現Sequential Guids,或試過?你能分享你的方法和/或代碼嗎?
我們使用Guid's作爲至少一半表格的標識符。對於其他表格,可以使用更多「自然」標識符,以便我們可以從自然聚集索引中獲益。我們注意到Guids的使用在數據庫中導致了很多開銷,因爲它們不是順序的。CodeFluent中的順序GUID
有沒有人在Codefluent中實現Sequential Guids,或試過?你能分享你的方法和/或代碼嗎?
您可以在C#中使用UuidCreateSequential
生成一個新的順序guid,並將其分配給構造函數中的屬性(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();
}
謝謝meziantou,那就是我一直在尋找的! –
@PeterdeBruijn - 這不會改變很多,需要改進:https://blogs.msdn.microsoft.com/dbrowne/2012/07/03/how-to-generate-sequential-guids-for- sql-server-in-net /但無論如何,我不知道它將如何在一段時間「順序」,並從不同的機器。如果需要「順序性」,則必須使用身份而不是指導 –
A 「序列的Guid」 是一個矛盾。所以不行。 – Gustav
古斯塔夫,有很多關於連續指導的文檔。例如,請閱讀http://www.siepman.nl/blog/post/2013/10/28/ID-Sequential-Guid-COMB-Vs-Int-Identity-using-Entity-Framework.aspx。 –
謝謝,不知道那個。似乎是_SQL Server_ special,所以我在您的問題中添加了_SQL Server_標記。 – Gustav