我试图使用NHibernate的,Spring和WCF在一起。 我有一个Order
对象,包含Customer
对象。
我可以调用WCF方法findOrder
我的服务,并提供Order
的Customer
现场没有一个DataMember
的注释,Web服务返回的Order
我想要的。 它不包含Customer
的详细信息虽然符合市场预期。
但是,当我尝试包括Customer
以及,WebService的失败,并期待在WCF跟踪日志,我可以看到这个错误:
System.Runtime.Serialization.SerializationException:键入 'DecoratorAopProxy_95d4cb390f7a48b28eb6d7404306a23d' 数据合同名称 'DecoratorAopProxy_95d4cb390f7a48b28eb6d7404306a23d:HTTP://schemas.datacontract.org/2004/07/' 预计不会。 考虑使用DataContractResolver或添加静态已知的已知类型的列表中的任何类型的不 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型的列表
很肯定这是因为客户包含额外的NHibernate的细节,但我不明白为什么WCF会很乐意送Order
,而不是Customer
。
谁能帮我明白了吗?
Order对象
[DataContract]
[KnownType(typeof(Customer))]
public class Order
{
// Standard properties
[DataMember]
public virtual int Id { get; set; }
public virtual Enums.OrderStatus Status { get; set; }
[DataMember]
[StringLength(20, ErrorMessage = "Order name must not be more than 20 characters long")]
public virtual string Name { get; set; }
[DataMember]
public virtual Customer Customer { get; set; }
[DataContract]
...
}
客户对象
public class Customer
{
public virtual int CustomerId { get; set; }
[DataMember]
private string name = "";
...
}