首页 > 其他 > 详细

ef core 关于 guid(外键)可空类型

时间:2021-06-02 15:13:00      阅读:14      评论:0      收藏:0      [点我收藏+]

c# 里 给类型后面加个? 问号 代表 他是 可空的(nullable<T>) 

通常 ef core 里面 关联外键的时候  用 guid 或者 long ,这些都是有默认值的 guid 的默认值是 (00000000-0000-0000-0000-000000000000)   long 默认值是 0 ,

但是如果 给 guid? 或者 long? 那么 在 数据库里面 他们也表示 为 null 了 ,就不会有默认值 

默认值 会 影响 数据 的写入 

如果 不给 guid 加问号 ,你不传这个guid ,他最后 写入数据库的时候  就会 给默认值 00000000-0000-0000-0000-000000000000 从而 会 报 

    MessageText: 插入或更新表 "Sn_ConstructionBase_SubItemContent" 违反外键约束 "ForeignKey_SubItem_SubItemContent"
    Detail: 键值对(SubItemId)=(00000000-0000-0000-0000-000000000000)没有在表"Sn_ConstructionBase_SubItem"中出现.

就是因为 数据库里面 外键表 的数据 没有 00000000-0000-0000-0000-000000000000 这个数据 

解决方法 就是 在 entity 里面定义  外键guid 的时候  写 guid? 加个问号 

同样 在 createDto 或者  UpdateDto 里面 传入插入的外键的时候 也要给 guid? 

并且在 dto 展示的时候  有guid 类型 的话 给 guid? 

这样 插入 更新 的时候 就不会报 违反外键约束 的错啦 ~

ef core 关于 guid(外键)可空类型

原文:https://www.cnblogs.com/ifnk/p/14840516.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!