あなたのIDタイプにはlong
を使用することをお勧めします。これは「うまくいく」と、GUIDよりもパフォーマンスが向上しています。 GUIDを使用する場合は、Sequential GUIDを使用し、コンストラクタでそれを設定する必要があります。
public class Sample
{
public Sample() {
ID = GuidComb.Generate();
}
[Required]
public Guid ID { get; private set; }
[Required]
public string FirstName { get; set; }
}
シーケンシャルGUID
public static class GuidComb
{
public static Guid Generate()
{
var buffer = Guid.NewGuid().ToByteArray();
var time = new DateTime(0x76c, 1, 1);
var now = DateTime.Now;
var span = new TimeSpan(now.Ticks - time.Ticks);
var timeOfDay = now.TimeOfDay;
var bytes = BitConverter.GetBytes(span.Days);
var array = BitConverter.GetBytes(
(long)(timeOfDay.TotalMilliseconds/3.333333));
Array.Reverse(bytes);
Array.Reverse(array);
Array.Copy(bytes, bytes.Length - 2, buffer, buffer.Length - 6, 2);
Array.Copy(array, array.Length - 4, buffer, buffer.Length - 4, 4);
return new Guid(buffer);
}
}
は、あなたが使用したいあなたは確かにあります主キーとしてのGUIDを使用すると、GUIDがクラスタード・インデックスの場合、断片化のために大きなパフォーマンス上の問題が発生します。 –
はい私はGUIDを何らかの理由でプライマリキーとして使用したいのですが、GUIdのデフォルト値を設定する方法を教えてください。 – user2285613
Guid.NewGuid(); –