用Linq自动序列化到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; }
    }
}

这条路? ...

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();
}

你看,上面的代码不能正常工作,它抛出的异常说它不能将字符串转换为MainTableSetting ,这意味着要么不能保存所有的序列化数据,要么加上不能反序列化它。

我需要一些建议,当我访问数据库时,如何Linq-to-Sql这个Linq-to-Sql实际执行序列化(反之亦然)。


尽管您可以按照类型映射运行时行为矩阵中所示将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;
    }
}
链接地址: http://www.djcxy.com/p/66039.html

上一篇: Automatic serialization with Linq to Sql

下一篇: Different versions of Enterprise Library in one process