Entity Framework Code First与Guid的比较

5
在我的简单类中,我使用数据注释将属性映射到列,如下所示:
[Table("Member")]
public class Member
{
    [Key]
    public Guid MemberId { get; set; }

    // More properties go here
}

我已经可以将新成员写入我的表格,但是MemberId总是默认为新的Guid(0000-000-00...),而不是一个美丽的服务器生成的Guid。
我看到过一些情况,人们更改了EDMX文件中称为StoreGeneratedPattern的某些设置。但由于我使用的是Code First,显然我没有这个EDMX文件...
那么我该如何解决这个问题呢?
非常感谢任何帮助。
更新!
好的,我刚刚找到了答案。您可以使用注释。
[Table("Member")]
public class Member
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid MemberId { get; set; }

    // More properties go here
}

2个回答

6

使用注释:

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

    // More properties go here
}

3

由于您在使用int类型键时不需要/不能使用自动增量功能,因此我一直在类构造函数中初始化我的Guids。

所以,我会改为...

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

    public Member
    {
      MemberId = Guid.NewGuid();
    }
}

1
如果您使用这种方法,那么在保存更改到上下文时,如何处理 Guid 的唯一性呢? - Raheel Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接