How to set NewId() for GUID in entity framework
asp.net-mvc, asp.net-mvc-3, asp.net-mvc-4, entity-framework-5
Solution
I would recommend just using `long` for your ID type. It "just works" with and has some performance gains over GUID. But if you want to use a GUID, you should use a Sequential GUID and set it in the constructor. I would also make ID a `private` setter:
public class Sample
{
public Sample() {
ID = GuidComb.Generate();
}
[Required]
public Guid ID { get; private set; }
[Required]
public string FirstName { get; set; }
}
Sequential 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);
}
}
Problem
I am creating asp.net mvc4 sample.In this i created Id column as GUID in Sample table of datacontext. ``` public class Sample { [Required] public Guid ID { get; set; } [Required] public string FirstName { get; set; } } ``` This is entity table ``` CreateTable( "dbo.Samples", c => new { ID = c.Guid(nullable: false), FirstName = c.String(nullable: false) }) .PrimaryKey(t => t.ID); ``` Id pass 00000000-0000-0000-0000-000000000000. How to set `newid()` to `GUID` and where i have to set.