我正在创建 asp.net mvc4 示例。在此我在 datacontext 示例表中创建了 Id 列作为 GUID。
public class Sample
{
[Required]
public Guid ID { get; set; }
[Required]
public string FirstName { get; set; }
}
这是实体表
CreateTable(
"dbo.Samples",
c => new
{
ID = c.Guid(nullable: false),
FirstName = c.String(nullable: false)
})
.PrimaryKey(t => t.ID);
ID 密码 00000000-0000-0000-0000-000000000000。
如何将 newid()
设置为 GUID
以及我必须设置的位置。
最佳答案
我建议您仅使用 long
作为您的 ID 类型。它“只适用于”GUID,并且比 GUID 有一些性能提升。但如果您想使用 GUID,则应该使用 Sequential GUID并在构造函数中设置它。我还将 ID 设置为 private
setter:
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);
}
}
关于asp.net-mvc - 如何在 Entity Framework 中为GUID设置NewId(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18200817/