我有以下代码,如下所示:
以下是测试方法的代码。
SalesOrder order = new SalesOrder();
order.CustomerID = 1;
order.OrderDate = DateTime.Now;
order.SalesTax = 5.60M;
order.ShipCharge = 5.00M;
order.DiscountPercent = 20;
order.ModifiedByUser = Environment.UserName;
order.CreatedByUser = Environment.UserName;
SalesOrderDetail detail = new SalesOrderDetail();
detail.SalesOrder = order;
detail.OrderID = order.OrderID;
detail.OrderQuantity = 15;
detail.UnitPrice = 20;
detail.Description = "Test";
detail.ModifiedByUser = Environment.UserName;
detail.CreatedByUser = Environment.UserName;
order.SalesOrderDetails.Add(detail);
order = _service.SaveOrder(order);
order.SalesOrderDetails目前有一个项目。但是当它到达WCF方法时,order.SalesOrderDetails的计数为0。
这是我的SalesOrder类和SalesOrderDetail类
public partial class SalesOrder: EntityBase
{
public SalesOrder()
{
this.SalesOrderDetails = new BindingList<SalesOrderDetail>();
((BindingList<SalesOrderDetail>)SalesOrderDetails).ListChanged += SalesOrder_ListChanged;
}
.... other properties
[DataMember]
public ICollection SalesOrderDetail{get; set;}
}
public partial class SalesOrderDetail : EntityBase
{
.... other properties
[DataMember]
public SalesOrder SalesOrder{get; set;}
}
我的实体基地
[DataContract(IsReference = true)]
public class EntityBase:IAuditable, INotifyPropertyChanged
{
.... IAuditable, INotify members
}
我的WCF方法
public SalesOrder SaveOrder(SalesOrder order) // At this point order.SalesOrderDetails count is 0.
{
if (order.OrderID == 0)
AddSalesOrder(order);
else
UpdateSalesOrder(order);
return order;
}
我在这里缺少什么?谢谢你的帮助!
答案 0 :(得分:3)
我通过将[DataContract(IsReference = true)]添加到公共部分类SalesOrder来修复它:EntityBase和公共部分类SalesOrderDetail:EntityBase。不确定它是如何产生影响的。但这解决了我的问题。