使用LINQ在SQL Server中存储二进制对象

时间:2010-08-16 20:06:19

标签: sql-server linq serialization

我正在尝试做与this question相同的事情,但遇到了问题。

在插入和更新数据库之前,您能与我分享您如何准备对象吗?

我有一个List<myObject>我希望在SQL Server 2008中存储为VarBinary(max)

1 个答案:

答案 0 :(得分:2)

您需要将List<object>转换为byte[]。您不需要Linq,但我假设您使用的是Linq To Sql?在将对象存储在应包含二进制文件的属性中之前,需要将其转换为byte[]。以下是一些示例代码,可以满足您的需求(Source Link):

// Convert an object to a byte array
private byte[] ObjectToByteArray(Object obj)
{
    if(obj == null)
        return null;
    BinaryFormatter bf = new BinaryFormatter();
    MemoryStream ms = new MemoryStream();
    bf.Serialize(ms, obj);
    return ms.ToArray();
}

// Convert a byte array to an Object
private Object ByteArrayToObject(byte[] arrBytes)
{
    MemoryStream memStream = new MemoryStream();
    BinaryFormatter binForm = new BinaryFormatter();
    memStream.Write(arrBytes, 0, arrBytes.Length);
    memStream.Seek(0, SeekOrigin.Begin);
    Object obj = (Object) binForm.Deserialize(memStream);
    return obj;
}