序列化对象 - 替换值

时间:2010-07-21 18:20:27

标签: c# .net-3.5 xml-serialization replace

我有大约20,000个对象需要持久保存到我的数据库中。现在,我想使用XML参数传递所有记录,而不是做20,000个插入语句。

就序列化对象并将其传递给程序而言,我已经完成了设置。但是,我想知道是否有人有一种优雅的方式来执行以下操作:

在我们的C#代码库中;我们有一些静态值,表示保存到数据库时为NULL。例如,如果整数等于-1,或者DateTime等于DateTime.MinValue;保存NULL。我们有自己的小自定义实现,可以在保存对象时为我们处理。

在执行XML序列化时,有什么方法可以做类似的事情吗?现在它在XML中输出-1和DateTime.MinValue。我有一个扩展方法(IsNull()),如果保存的值是空的默认值,它将返回true / false。

有什么建议吗?提示/技巧?

2 个答案:

答案 0 :(得分:0)

您可以实现IXmlSerializable来控制对象的XML序列化。特别是,实现WriteXml以替换包含空指示符值的属性/字段的空白或xsi:null值(但是您要处理此值)。

答案 1 :(得分:0)

XmlSerializer了解许多不同的属性;其中一个是DefaultValueAttribute

包含时,如果实际值与默认值不同,XmlSerializer将仅序列化值检查,因此您只需要:

[DefaultValue(-1)]
public int SomeProperty
{get;set;}

另外,如果您还没有考虑过它,请查看SqlBulkCopy类,这是一种将大量记录发送到SQL Server的高效方法。