最近在使用Entity FrameWork 5.0,其中有一张业务表涉及到 int类型非自增主键ID,在插入数据时报主键ID不能插入NULL值,但实际上在插入时,我是对ID进行赋值了的,为什么会这样呢?
查阅了官方文档,有这么一句话:为了用户更好的体验,在使用Entity FrameWork时,我们对int类型的主键做了处理,默认其为自增长类型(Identity)。
大概意思是这样,这貌似时4.0以后的特性,但是这并不妨碍我们使用Entity FrameWork 5.0,微软贴心地给了处理非自增int型主键的方法,就是在主键ID上声明标识不处理当前 int型主键的特性:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
例如:声明不对int型主键F_Id处理
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int F_Id { get; set; }
public int? F_UserId { get; set; }
public string F_UserPassword { get; set; }
What is DatabaseGeneratedOption?
DatabaseGeneratedOption是枚举变量,有以下三种:
Identity:自增长
None:不处理
Computed:表示这一列是计算列