Reputation: 785
I have the following code that is layered as below:
Here is the code from test method.
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 has one item at this time. But when it reaches the WCF method, order.SalesOrderDetails has a count of 0.
Here is my SalesOrder class and SalesOrderDetail class
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;}
}
My EntityBase
[DataContract(IsReference = true)]
public class EntityBase:IAuditable, INotifyPropertyChanged
{
.... IAuditable, INotify members
}
My WCF Method
public SalesOrder SaveOrder(SalesOrder order) // At this point order.SalesOrderDetails count is 0.
{
if (order.OrderID == 0)
AddSalesOrder(order);
else
UpdateSalesOrder(order);
return order;
}
What am I missing here? Thanks for your help!
Upvotes: 1
Views: 499
Reputation: 785
I fixed it by adding [DataContract(IsReference = true)] to public partial class SalesOrder: EntityBase and public partial class SalesOrderDetail : EntityBase. Not sure how it made a difference. But that fixed my issue.
Upvotes: 3