首页新闻找找看学习计划

.Core 2.2 用Database First把表转为实体时遇到问题

0
悬赏园豆:5 [已解决问题] 解决于 2019-04-13 11:33

按https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db的提示转换,发现数据库中字段Status(非空的bool,默认值为1),转为Models时,被转为 public bool? Status { get; set; };可为空的字段CreateBy(可为空的varchar(50)),在Model 中转换为 public string CreateBy { get; set; }

这个是什么原因使数据库字段和Model属性不一致;这种不一致对程序有啥影响?

泰德的主页 泰德 | 初学一级 | 园豆:11
提问于:2019-04-11 00:50
< >
分享
最佳答案
0

not null的字段怎么可能转换为bool? 你自己先核实一下Status到底是否为not null,如果只有有默认值1,并不是你说的表列结构定义not null,就会出现bool?
引用类型本身就是可null类型,当然就不用再加?
bool、int、datetime这些是值类型,如果要赋值为null就必需加?运算符标识。

收获园豆:5
Adming | 初学一级 |园豆:24 | 2019-04-11 10:27

CreateBy字段:

Status字段:

泰德 | 园豆:11 (初学一级) | 2019-04-11 13:08

@泰德:
CreateBy 那个是 string 类型,string 本身就是引用类型,可以赋值为null(默认也为null)
Status 那个应该是一个bug 换个版本试下看看,可以手动把bool后面的?去掉,免得引起歧义

Adming | 园豆:24 (初学一级) | 2019-04-11 13:12

@Adming:
用的使.Core2.2,不至于有Bug吧

泰德 | 园豆:11 (初学一级) | 2019-04-11 13:15

@泰德: 这个可不一定,和.net core2.2没直接关系,这个属于EF Core的范围,EF Core推荐的方式是代码优先,不是数据库优先,出bug也不是什么稀奇事。像没有主键的表用EF Core生成代码时直接被忽略,连实体都不会生成。

Adming | 园豆:24 (初学一级) | 2019-04-11 13:21
其他回答(1)
0

数据库是不是设置 Status 可为空了,不然怎么会转成 bool?;
bool? 有三个值,true,false,null;
在调用的时候,不能直接用 Status ,需要加一个(bool) Status 转换,否则编译会报错;
如果查出来 Status 为空,运行也会报错,要先赋值。

三人乐乐 | 园豆:3195 (老鸟四级) | 2019-04-11 10:07

CreateBy字段:

Status字段:

支持(0) 反对(0) 泰德 | 园豆:11 (初学一级) | 2019-04-11 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册