不能使用LINQ在varbinary列中插入NULL

本文关键字:插入 NULL varbinary LINQ 不能 | 更新日期: 2023-09-27 18:15:31

我有一个代码,通过LINQ更新一个记录到SQL:

dc.ClCxDemographicFileAttachments.InsertOnSubmit(new MasterDataContext.ClCxDemographicFileAttachment()
{
    ...
    FileData = characteristicDataFileAttachment.FileData,
});

ClCxDemographicFileAttachment表中的FileData列是VARBINARY(MAX),在SQL表中为空,DataContext中的列/属性是System.Data.Linq.Binary。

问题是,如果我将FileData属性设置为null, LINQ将为该列(0x)生成一个空字节[],而不是null。我想要后者。我该如何解决这个问题?

不能使用LINQ在varbinary列中插入NULL

您应该使用byte[]而不是System.Data.Linq.Binary的数据类型,否则会发生一些隐式转换,您将不会在您的数据库中获得空条目

大卫,不知道你为什么删除你的评论,但你是对的。我只需要将DataContext中的FileData列从System.Data.Linq.Binary更改为System.Byte[]。不知道为什么是前者

您可以尝试编写一个内联,如果它返回一个DBNull。值,如果结果是空字节数组(伪代码):

FileData = characteristicDataFileAttachment.FileData == emptyByteArray ? DBNull.Value : characteristicDataFileAttachment.FileData, ...

如果你不喜欢内联if,你也可以将它存储在一个变量中。