2009-10-27 124 views
1

我正在使用Linq-To-Sql的应用程序的审核日志。我想序列化一个对象以将其值存储在SQL Server数据库的XML列中。Linq-to-Sql对象的XML序列化?

我的问题是,当我尝试序列化Linq-To-Sql obejct时,它试图序列化所有关联的实体和实体集。

我的解决方案的第一次尝试是创建单独的类tos撕裂我需要序列化,然后将其传递给XmlSerializer。

我想我真正想知道的是如何让XmlSerializer忽略某些类型的属性 - 例如实体和实体集。

我必须编写自己的XmlSerializer吗?

所有和任何建议将被折扣。

回答

1

您需要使用DataContractSerializer,但这仍然会序列化部分对象图。

更好的解决方案是生成自己的Linq2SQL类并应用XmlIgnore/DataMember属性(取决于您使用的是XmlSerializer还是DataContractSerializer)。

+0

+1是的,使用DataContractSerializer ...示例:http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/73e82932-d41c-4e51-a91a-704aead00526 – KristoferA 2009-10-27 11:29:44

+0

小心'DataContractSerializer'不会对作为对象实现一部分的字段进行序列化。它对.NET 3.5中的实体框架类型这样做,我认为我看到它对L2S也是如此。 – 2009-10-28 01:43:53