我有大约20,000个对象需要持久保存到我的数据库中。现在,我想使用XML参数传递所有记录,而不是做20,000个插入语句。
就序列化对象并将其传递给程序而言,我已经完成了设置。但是,我想知道是否有人有一种优雅的方式来执行以下操作:
在我们的C#代码库中;我们有一些静态值,表示保存到数据库时为NULL。例如,如果整数等于-1,或者DateTime等于DateTime.MinValue;保存NULL。我们有自己的小自定义实现,可以在保存对象时为我们处理。
在执行XML序列化时,有什么方法可以做类似的事情吗?现在它在XML中输出-1和DateTime.MinValue。我有一个扩展方法(IsNull()
),如果保存的值是空的默认值,它将返回true / false。
有什么建议吗?提示/技巧?
答案 0 :(得分:0)
您可以实现IXmlSerializable
来控制对象的XML序列化。特别是,实现WriteXml
以替换包含空指示符值的属性/字段的空白或xsi:null
值(但是您要处理此值)。
答案 1 :(得分:0)
XmlSerializer了解许多不同的属性;其中一个是DefaultValueAttribute
。
包含时,如果实际值与默认值不同,XmlSerializer将仅序列化值检查,因此您只需要:
[DefaultValue(-1)]
public int SomeProperty
{get;set;}
另外,如果您还没有考虑过它,请查看SqlBulkCopy类,这是一种将大量记录发送到SQL Server的高效方法。