ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

c# – 将Linq To Sql Binary字段设置为null

2019-05-26 23:53:08  阅读:300  来源: 互联网

标签:c linq-to-sql varbinary


尝试将二进制字段设置为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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有