Windows Workflow环境下VB如何将Byte()转为数据库可存空值?
解决Windows Workflow Foundation中VB环境下Byte()字段置空存库的问题
核心问题原因
直接传入DbNull.Value会因类型不匹配(无法转换为Byte())报错,而空字节数组New Byte() {}在数据库中会被识别为长度为0的字节数据,而非NULL值。结合WF拖放界面无法编写外部代码的限制,可通过以下内置活动实现:
解决方案1:使用Assign活动中转变量
- 声明一个Object类型的变量(例如
dbNullPlaceholder) - 添加Assign活动,将
dbNullPlaceholder赋值为DbNull.Value - 在数据库插入/更新活动的对应PDF字段绑定中,选择这个Object类型变量,而非直接使用
DbNull.Value或空Byte()数组
解决方案2:使用InvokeMethod活动获取DbNull.Value
如果Assign直接赋值存在类型校验问题,可通过InvokeMethod活动获取合法的DbNull值:
- 添加InvokeMethod活动
- 设置
TargetType为System.DBNull - 设置
MethodName为get_Value(对应DBNull.Value的属性获取方法) - 将活动的返回值赋值给一个Object类型变量
- 设置
- 把这个变量绑定到数据库的PDF字段参数
关键前提
确保数据库中存储PDF的字段已设置为允许NULL值,否则无论如何传递都会触发数据库约束错误。
内容的提问来源于stack exchange,提问作者Jakxna360
相关产品推荐
相关产品推荐

