f# - F# EFCore 中的 varbinary 列使用什么可为空的类型?
问题描述
我有一个可以为空的 varbinary(8) 的 MSSQL 数据库列。当我尝试在我的 F# 记录中使该字段可为空时,我收到以下错误:
“通用构造要求类型 'byte[]' 具有公共默认构造函数”
Nullable<byte[]>
, Nullable<Byte[]>
,Nullable<Byte list>
或超出Nullable<seq<byte>>
此错误。
为简洁起见,我省略了其他字段。
[<Table("SurveyResponse"); CLIMutable>]
type SurveyResponse = {
mutable ContactId: Nullable<byte[]>
}
是否有一个可以为空的 F# 类型,我可以使用 EF Core 正确转换为 varbinary(8)?
解决方案
我对 EF 没有太多经验,也没有尝试此操作的所有设置,但是您收到的错误消息来自 F# 类型检查器,而不是来自 EF。
问题是Nullable<'T>
要求类型'T
是值类型 - 的目的Nullable
是添加null
到其他没有null
值的类型,例如int
or float
。但是,数组可以null
独立存在,不需Nullable
要这样做。
因此,假设 EF 在这里没有做任何特别的事情,我认为以下应该可以解决问题:
[<Table("SurveyResponse"); CLIMutable>]
type SurveyResponse = {
mutable ContactId: byte[]
}
给定一个SurveyResponse
值sr
,您可以检查sr.ContactId <> null
以处理null
值。
推荐阅读
- sockets - Arduino软件串行意外输出
- javascript - 我的 Bootstrap 菜单链接正在移动设备上运行
- discord - 如何计算一个命令被使用了多少次 [discord.js]
- r - 在 R 中为多个弹性网使用特定的 alpha 参数
- javascript - 无法将项目插入 mongodb 对象
- next.js - 来自 next/head 的 Head 组件渲染到而不是
- javascript - React 测试库 - 测试方法正在获取正确的参数
- .htaccess - 重写所有没有页面名称的url
- python-3.x - 在 tkinter 上需要有关对象检测程序的帮助
- javascript - 尝试使用量角器过滤 ng-repeat 生成的表