问题:
数据库 给ID createtime 字段设置了 newid() getdate() 类型没问题
我 new 实体类
插入实体类
数据库 和实体类 里面 guid 和 datetime 都是0000 默认值
我明明 记得 我有用过这种 方式
在插入 实体类的时候 不要对某些字段 赋值
回答1:
实体类的属性可以这样使用默认值
public Guid Id { get; set; } = Guid.NewGuid();
public DateTime CreateTime { get; set; } = DateTime.Now;
回答2:
默认值的含义是你不给这个字段赋值,才会使用默认值(NULL也是值)
所以插入的时候,insert语句不加该字段即可,ORM框架可以使用特性排除该字段
回答3:
要么同上@E行者一样给默认值,要么在映射的时候给默认值。
builder.Entity<XXX>().Property(l => l.X).HasDefaultValue(); //HasDefaultValueSql("GETDATE()")
回答4:
数据库给 ID createtime 两个字段的默认值,是在没有给字段赋值的时候生效的
比如
insert into tableA (filedA,filedB) values……
其中 tableA 存在字段 ID createtime
C# 中
Guid 的默认值是 00000000-0000-0000-0000-000000000000
DateTime 的 默认值是 Date = {0001-01-01 00:00:00}
生成 SQL 的时候,对这两个字段赋值了,插入的就是这样的值
你需要做的,要么是在EF模型中修改字段属性,要么就是直接对 Model 赋值你想要的值