簡體   English   中英

使用Linq到SQL將C#Object轉換為Varbinary和從Varbinary轉換

[英]Convert C# Object to and from Varbinary using Linq to SQL

我希望能夠將任何C#對象保存在SQL數據庫表的單個列中。 我不清楚如何將對象轉換為varbinary或從varbinary中獲取它。 我的SystemContextObjects表有一個Varbinary(max)的OptionValue列。

var dc1 = new DataContextDataContext();
var optionUpdate = dc1.SystemContextObjects.SingleOrDefault(o => o.OptionId == OptionId && o.OptionKey == OptionKey);
if (optionUpdate != null)
{
    optionUpdate.OptionValue = Value;  <===== NEED HELP HERE...
    optionUpdate.DateCreated = DateTime.Now;
    optionUpdate.PageName = PageName;
    var ChangeSet = dc1.GetChangeSet();
    if (ChangeSet.Updates.Count > 0)
    {
        dc1.SubmitChanges();
        return;
    }
}

你可以使用二進制序列化器,例如使用BinaryFormatter - 但是你的類必須是可序列化的並且標記為這樣,這里有一個簡單的例子:

你有一個簡單的Person類,並將其標記為可序列化:

[Serializable]
public class Person
{
    public string Name { get; set; }
    public string Address { get; set; }
}

然后,您可以使用內存流對其進行序列化,以提取表示對象的字節數組:

Person p = new Person() { Name = "Fred Fish", Address = "2 Some Place" };
using (MemoryStream ms = new MemoryStream())
{
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(ms, p);

    ms.Position = 0;
    byte[] personData = ms.ToArray(); // here's your data!
}

要從字節數組重新創建Person對象,請使用反序列化,其工作方式類似:

byte[] personData = ...
using (MemoryStream ms = new MemoryStream(personData))
{
    BinaryFormatter formatter = new BinaryFormatter();
    Person p = (Person)formatter.Deserialize(ms);
}

我結束了使用JSON來實現這一目標。 我將類序列化/反序列化為字符串並將其存儲起來。 工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM