5

In my simple class I'm using data annotations to map properties to columns as such:

[Table("Member")]
public class Member
{
    [Key]
    public Guid MemberId { get; set; }

    // More properties go here
}

I can already write new members to my table but MemberId always defaults to a new Guid (0000-000-00...) instead of a beautiful server generated Guid.

I've seen scenarios where people change some setting called StoreGeneratedPattern in an EDMX file. But since I'm using Code First obviously I don't have this EDMX file...

So how would I go about solving this?

Any help is very much appreciated.

UPDATE!!

Ok, just found the answer myself. You can use an annotation.

[Table("Member")]
public class Member
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid MemberId { get; set; }

    // More properties go here
}
Aetherix
  • 2,150
  • 3
  • 24
  • 44
  • possible duplicate of [using Guid as PK with EF4 Code First](http://stackoverflow.com/questions/5270721/using-guid-as-pk-with-ef4-code-first) – jrummell Apr 20 '12 at 13:17

2 Answers2

6

Use an annotation:

[Table("Member")]
public class Member
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid MemberId { get; set; }

    // More properties go here
}
Aetherix
  • 2,150
  • 3
  • 24
  • 44
3

I have been initializing my Guids in the class constructor since you don't need / can't use the auto-increment functionality that you use with int type keys.

So, I would change to...

[Table("Member")]
public class Member
{
    [Key]
    public Guid MemberId (get; set;}

    public Member
    {
      MemberId = Guid.NewGuid();
    }
}
vansimke
  • 964
  • 6
  • 8