Entity Framework中的DatabaseGenerated

    在数据库中建表的时候,配置列属性DatabaseGenerated的值为DatabaseGeneratedOption.None。为了弄清楚这个属性的含义,查阅了相关资料。

 [Table("Entities")]
  public class PgEntity
  {
      [Key,DatabaseGenerated(DatabaseGeneratedOption.None)]
      [Column("EntityLabel")]
      public int Label { get; set; }

      [Column("TypeId")]
      public int Id { get; set; }
  }
    DatabaseGeneratedOption是一个枚举类型,它的定义如下:
public enum DatabaseGeneratedOption
{
    None = 0,
    Identity = 1,     
    Computed = 2     
}

  • None表示不处理
  • Identity表示自增长
  • Computed表示计算所得。

None表示数据库直接存储读入的值,不做额外处理。

在Entity Framework中,如果主键是int类型,生成数据库的时候会自动设置该列为自增长。如果主键是Guid类型,我们就要手动设置列的属性为自增长。

如果对属性标识为Computed,Entity Framework会认为该列是通过其它列计算得出的,不会将其持久化到数据库中

猜你喜欢

转载自blog.csdn.net/liyazhen2011/article/details/80504748