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