序列化POCO实体

问题描述:

我可以序列化POCO类吗?我正在使用C#POCO实体生成器。序列化POCO实体

我试图编辑生成实体类以添加Serializable属性的.tt文件。这样对吗?

您使用的是POCO代理,而不是纯粹的POCO。如果(显然)它们是可序列化的,纯POCOs可以被序列化。代理可能不是。

+0

如果我使用ADO.NET POCO实体生成器生成POCO实体,如何序列化POCO?当我将上下文的ProxyCreationEnabled属性设置为false时,代理创建功能已被禁用,因此我确信我没有使用这些代理。 – jean27 2010-08-03 05:29:37

+1

您可以随时序列化真实的POCO。如果您使用的代理不是真正的POCO,那么您应该投射到真正的POCO上。我通常在序列化之前投射到匿名类型上,因为这保证了没有循环引用,无论如何通常会终止序列化。 – 2010-08-03 13:07:00

+0

嗨克雷格!之后你如何设计匿名类型?我也有问题的循环引用,然后想到我们的匿名类型的方法,但我不知道如何反序列化他们......你能举个例子吗?非常感谢! – 2011-01-14 12:44:24

我们无法承受禁用ProxyCreation(显而易见的解决方案)。相反,我们使用Value Injecter来解决它。这很简单:

var dynamicProxyMember = _repository.FindOne<Member>(m=>m.Id = 1); 
var member = new Member().InjectFrom(dynamicProxyMember) as Member; 

享受!