首页 新闻 会员 周边

EF 插入值问题

0
悬赏园豆:5 [已解决问题] 解决于 2020-12-31 11:10

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

我 new 实体类
插入实体类

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

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

伊克西翁的主页 伊克西翁 | 初学一级 | 园豆:187
提问于:2020-11-05 21:57
< >
分享
最佳答案
1

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

public Guid Id { get; set; } = Guid.NewGuid();
public DateTime CreateTime { get; set; } = DateTime.Now;
收获园豆:5
E行者 | 小虾三级 |园豆:1761 | 2020-11-06 08:10
其他回答(3)
0

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

大志若愚 | 园豆:2138 (老鸟四级) | 2020-11-06 09:44
0

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

builder.Entity<XXX>().Property(l => l.X).HasDefaultValue(); //HasDefaultValueSql("GETDATE()")
Jonny-Xhl | 园豆:691 (小虾三级) | 2020-11-07 22:08
0

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

Rotin | 园豆:213 (菜鸟二级) | 2020-11-25 10:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册