CodeFluent 中的顺序 GUID
Sequential GUID's in CodeFluent
我们使用 Guid 作为至少一半表的标识符。对于其他表,可以使用更多 'natural' 标识符,这样我们就可以从自然聚簇索引中获益。我们注意到使用 Guids 会导致数据库中的大量开销,因为它们不是顺序的。
有人在 Codefluent 中实现或尝试过 Sequential Guids 吗?您可以分享您的方法 and/or 代码吗?
您可以使用 UuidCreateSequential
在 C# 中生成一个新的顺序 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();
}
我们使用 Guid 作为至少一半表的标识符。对于其他表,可以使用更多 'natural' 标识符,这样我们就可以从自然聚簇索引中获益。我们注意到使用 Guids 会导致数据库中的大量开销,因为它们不是顺序的。
有人在 Codefluent 中实现或尝试过 Sequential Guids 吗?您可以分享您的方法 and/or 代码吗?
您可以使用 UuidCreateSequential
在 C# 中生成一个新的顺序 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();
}