c# – 将Linq To Sql Binary字段设置为null
作者:互联网
尝试将二进制字段设置为null会给我一个ArgumentNull异常.
我可以将字段设置为空,就像这个新的Binary(new byte [] {});但这不是空的只是一个空列.是否有使用LinqToSql的解决方法?
解决方法:
你还有别的事情要发生.我刚刚创建了一个带有id(标识),可空varbinary(MAX),非可空varbinary(MAX)和时间戳的小样本表.使用以下代码可以正常工作,没有错误.
using (var context = new TestDataContext())
{
var binarySample = new BinarySample
{
Image = null,
NonNullImage = new Binary( new byte[0] ),
};
context.BinarySamples.InsertOnSubmit( binarySample );
context.SubmitChanges();
}
此代码正确抛出(并捕获)SQLException,而不是ArgumentNullException.
try
{
using (var context = new TestDataContext())
{
var binarySample2 = new BinarySample
{
NonNullImage = null,
Image = new Binary( new byte[0] )
};
context.BinarySamples.InsertOnSubmit( binarySample2 );
context.SubmitChanges();
}
}
catch (SqlException e)
{
Console.WriteLine( e.Message );
}
您是否可能有一个部分类实现具有抛出ArgumentNullException的属性的SendPropertyChanging处理程序?
编辑:基于OP的评论.
请注意,您不能直接将bin []类型的变量分配给Binary,因为它调用implicit conversion operation并且隐式转换将抛出ArgumentNullException.在尝试分配值之前,应检查该值是否为null,如果byte []变量为null,则只需指定null.对我来说,这似乎是奇怪的行为,我希望他们将来会改变它. MSDN文档表明在将来的版本中可能会发生某些更改.
标签:c,linq-to-sql,varbinary 来源: https://codeday.me/bug/20190526/1159243.html