0
我有一个SQL Server表,其中列NameHash
与binary(16)
类型,它允许空值。如何在C#中将System.Data.Linq.Binary分配给null?
在我的C#应用程序,我有一个非常基本的MD5哈希扩展方法:
public static byte[] CalculateMD5HashBinary(this string input)
{
if (String.IsNullOrEmpty(input))
{
return null;
}
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
return md5.ComputeHash(inputBytes);
}
我使用LINQ to SQL
分配值:
var fooBar = MyContext.FooBars.First();
fooBar.NameHash = fooBar.Name.CalculateMD5HashBinary();
MyContext.SubmitChanges();
当Name
为空或为空, NameHash
列应该为空。但是,当我将这个值保存在数据库中时,我检查了我看到的十六进制字符串0x00000000000000000000000000000000
的值。
它为什么这样做?我如何获得正确分配到NameHash
二进制列中的空值?