Bob*_*nes 2 .net c# sql varbinarymax
我希望能够将任何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;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用二进制序列化程序,例如使用BinaryFormatter- 但您的类必须是可序列化的并且标记为这样,这里是一个简单的示例:
你有一个简单的Person类,并将其标记为可序列化:
[Serializable]
public class Person
{
public string Name { get; set; }
public string Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用内存流对其进行序列化,以提取表示对象的字节数组:
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!
}
Run Code Online (Sandbox Code Playgroud)
要从字节数组重新创建Person对象,请使用反序列化,其工作方式类似:
byte[] personData = ...
using (MemoryStream ms = new MemoryStream(personData))
{
BinaryFormatter formatter = new BinaryFormatter();
Person p = (Person)formatter.Deserialize(ms);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4468 次 |
| 最近记录: |