今天在插入一条数据的时候 有个createtime字段 因为数据库是给了默认值 getdate() 所以在new 实体的时候 就没有给 entity 赋值
然后一插入 报错了
不能将值 NULL 插入列 'CreateTime',表 'KeyAnalysis.dbo.HotSearch';列不允许有 Null 值。INSERT 失败。
在网上找了一会资料 说 这是ef 的一个bug
我觉得不是 既然有解决方案 那就肯定不是bug
上解决方案
1. Code First的时候 需要将 Model.edmx文件里,createtime字段加上 StoreGeneratedPattern="Identity" 属性才行。 不会 ? 右击文件 选属性 自己找
2.DB First的时候 这时候 我们是没有edmx文件 只能用下面这种方案了
名称空间 namespace System.ComponentModel.DataAnnotations.Schema
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime? CreateDate { get; set; }
这样就行了