7

有没有办法将数据存储在这样的表中:

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

并且还可以DataContext选择:

使用类 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实际进行序列化(反之亦然)。

4

1 回答 1

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;
    }
}
于 2012-11-16T09:08:12.677 回答