EF 插入值问题

2020-12-31 10:41发布

数据库 给ID createtime 字段设置了 newid() getdate() 类型没问题

我 new 实体类
插入实体类

数据库 和实体类 里面 guid 和 datetime 都是0000 默认值

我明明 记得 我有用过这种 方式
在插入 实体类的时候 不要对某些字段 赋值

标签: sqlserver ef c#
4条回答
ゆ 、 Hurt°
2楼-- · 2020-12-31 10:56

数据库给 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 赋值你想要的值

查看更多
淡お忘
3楼-- · 2020-12-31 10:57

要么同上@E行者一样给默认值,要么在映射的时候给默认值。

builder.Entity<XXX>().Property(l => l.X).HasDefaultValue(); //HasDefaultValueSql("GETDATE()")
查看更多
看我几分像从前
4楼-- · 2020-12-31 11:03

实体类的属性可以这样使用默认值

public Guid Id { get; set; } = Guid.NewGuid();
public DateTime CreateTime { get; set; } = DateTime.Now;
查看更多
我只想做你的唯一
5楼-- · 2020-12-31 11:12

默认值的含义是你不给这个字段赋值,才会使用默认值(NULL也是值)
所以插入的时候,insert语句不加该字段即可,ORM框架可以使用特性排除该字段

查看更多
登录 后发表回答