数据库
首页 > 数据库> > c# – 将Linq To Sql Binary字段设置为null

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