您将如何使用 C#/Entity Framework 在 SQL DB (SQL Server 2008) 中有效地存储 64 位哈希值?更具体地说,您将使用什么数据类型将哈希值存储在数据库中,以及如何将原始哈希值转换为值/从值转换为值?
原始哈希值被计算并存储在 BitArray 中:
BitArray hash = CalculateHashValue(); // Returns a BitArray(64)
存储此值的一种选择是使用二进制(64)数据类型。然后我可以使用以下方法将哈希添加到数据库中:
byte[] hashAsByteArray = new byte[8];
dhash.CopyTo(hashAsByteArray, 0);
MyDbObject mdo = new MyDbObject();
mdo.hash = hashAsByteArray;
db.MyDbObject.AddObject(mdo);
db.SaveChanges();
The resulting value stored in the DB from this option appears to have a lot of 0's padded at the end which doesn't look to be an efficient use of space (eg 0x0CAA0820848200800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
您会使用哪些更好的方法?谢谢!