用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