使用Linq to Sql自动序列化

Age*_*ire 7 c# serialization xml-serialization linq-to-sql

有没有办法在表格中存储数据:

http://pasteboard.s3.amazonaws.com/images/LDTcQpG.png

内部SettingsModel列,其定义Linq-to-Sql如下:

http://pasteboard.s3.amazonaws.com/images/LDXSPiM.png

并且DataContext选项转向:

http://pasteboard.s3.amazonaws.com/images/LE1ddhn.png

使用类SettingsModel定义如下:

namespace ElQueue.DataClasses
{
    [DataContract]
    public sealed class SettingsModel
    {
        [DataMember(IsRequired = true)]
        public int[] VideoMediaData { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

这条路?...

using (SomeDataContext dataContext = new SomeDataContext())
{
    SettingsModel m = new SettingsModel();
    m.VideoMediaData = new int[] { 1, 2, 3 };
    dataContext.MainTableSettings.InsertOnSubmit(new MainTableSetting() { SettingsModel = m });
    dataContext.SubmitChanges();
}

using (SomeDataContext dataContext = new SomeDataContext())
{
    var r = dataContext.MainTableSettings.Single();
}
Run Code Online (Sandbox Code Playgroud)

你看,上面的代码没有正常工作,它抛出异常,说它无法将字符串转换为MainTableSetting意味着它无法保存所有序列化数据或者加号无法反序列化它.

我需要一些建议如何Linq-to-Sql在访问数据库时将其指向实际进行序列化(反之亦然).

max*_*mpa 4

尽管您可以将 XElement 和 XDocument 映射到 SQL Server(如类型映射运行时行为矩阵中所示),但 System.Data.Linq.DataContext.CreateDatabase 方法没有针对这些类型的默认 SQL Server 类型映射

如果类实现Parse()ToString(),则可以将该对象映射到任何 SQL 文本类型(CHAR、NCHAR、VARCHAR、NVARCHAR、TEXT、NTEXT、XML)。通过将ToString()返回的值发送到映射的数据库列,将对象存储在数据库中。通过对数据库返回的字符串调用Parse()来重建该对象。

http://msdn.microsoft.com/en-us/library/bb386947.aspx#TextMapping

public sealed class SettingsModel
{
    // ...

    public static SettingsModel Parse(string source)
    {
        SettingsModel res;

        // Deserialise the object

        return res;
    }
}
Run Code Online (Sandbox Code Playgroud)