【发布时间】:2009-08-28 13:19:12
【问题描述】:
我有一个包含对象和数据访问代码的框架。这些对象使用 NHibernate 映射到数据库。
例如,我的框架有类 Customer 和 Order:
public class Customer
{
private Guid _id;
private string _name;
private IList<Order> _orders;
public properties...
}
public class Order
{
private Guid _id;
private string _orderNumber;
public properties...
}
我还有一个带有 PersistCustomer 方法的 WCF 服务。 像这样:
[ServiceContract]
public interface ICustomerService
{
[OperationContract]
void PersistCustomer(Customer customer);
}
这个 WCF 引用了我的框架库。
我已经为 WCF 服务创建了一个客户端应用程序(一个简单的控制台应用程序)并且它可以工作!
我无法理解的主要事情:为什么不将我在框架中的类装饰为 DataContract 并将它们的属性装饰为 DataMembers 就可以工作?我应该装饰它们吗?
谢谢
【问题讨论】:
-
您的任何库类型是否标记为
[Serializable]? -
没有。我的一个类被装饰为 [Serializable],但是当我尝试将此对象传递给 WCF 时遇到了问题。它在传递的子集合上失败,因为它无法反序列化它。所以我删除了 [Serializable] 属性,现在它可以工作了。
标签: c# wcf nhibernate datacontract