2010-08-16 5 views
1

J'essaie de faire la même chose que dans this question, mais j'ai des problèmes.Stockage des objets binaires dans SQL Server avec LINQ

Pouvez-vous partager avec moi comment vous avez préparé vos objets avant d'insérer et de mettre à jour la base de données?

J'ai un List<myObject> que je veux stocker en tant que VarBinary(max) dans SQL Server 2008.

+0

bienvenue dans Stack Overflow. Si l'une des réponses ci-dessous vous a aidé à répondre à votre question, vous devez la marquer comme la réponse acceptée. – Kelsey

Répondre

2

Vous devrez convertir votre List<object> à un byte[]. Vous n'avez pas besoin de Linq en particulier, mais je suppose que vous utilisez Linq To Sql? Avant de stocker votre objet dans la propriété qui doit contenir le binaire, vous devez le convertir en byte[]. Voici un exemple de code pour faire ce dont vous avez besoin (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; 
} 
+0

@ryan: c'est une excellente réponse! Envisagez «d'accepter» cette réponse avec la coche. –

Questions connexes