【问题标题】:Entity Framework Code First versus Guid实体框架代码优先与 Guid
【发布时间】:2012-04-20 13:13:36
【问题描述】:

在我的简单类中,我使用数据注释将属性映射到列:

[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
}

【问题讨论】:

标签: entity-framework entity-framework-4 entity-framework-4.3


【解决方案1】:

使用注释:

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

    // More properties go here
}

【讨论】:

    【解决方案2】:

    我一直在类构造函数中初始化我的 Guid,因为您不需要/不能使用与 int 类型键一起使用的自动增量功能。

    所以,我会改成……

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

    【讨论】:

    • 如果使用这种方法,在保存对上下文的更改时如何处理 Guid 的唯一性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2014-05-23
    • 1970-01-01
    相关资源
    最近更新 更多