在数据库中建表的时候,配置列属性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会认为该列是通过其它列计算得出的,不会将其持久化到数据库中