1
我正在写一个wcf服务,使用linq to sql datacontext来执行数据库操作。wcf服务不返回linq-to-sql表的父和子记录?
有一个客户和订单的记录,一种方法需要通过ID如下
public customer Customer_Get_By_Session_Id(string session_id) {
//check valid session_id
//...
//if session_id exists, get customer info
var saved_customer = (from p in db.customers
where p.session_id == session_id
select p).FirstOrDefault();
return saved_customer;
}
但是它只返回单个客户没有任何订单,从我的测试方法调用时返回特定的客户。
[TestMethod]
public void CustomerGetByid()
{
dataclassesDataContext db = new dataclassesDataContext();
var mycust = db.partner_svc_customers.FirstOrDefault();
var saved_customer = svc_wcf.Customer_Get_By_Session_Id(mycust.session_id);
//fails! saved_customer.orders.Count() == 0
Assert.IsTrue(saved_customer.orders.Count() == 1);
}
我可以通过修改我的方法手动将订单添加到另一位客户return_customer并返回该对象来解决此问题。
public customer Customer_Get_By_Session_Id(string session_id) {
//check valid session_id
//...
//if session_id exists, get customer info
var saved_customer = (from p in db.customers
where p.session_id == session_id
select p).FirstOrDefault();
var orders = saved_customer.orders.ToList();
customer return_customer = new customer();
return_customer = saved_customer;
foreach (order my_order in orders)
{
returned_customer.orders.Add(my_order);
}
return returned_customer;
}
现在测试完成而没有出现错误。
我的问题是为什么。这里缺少什么?客户对象是否不应该像所期望的那样被所有的订单发送出去?
感谢您的帮助!
奏效!谢谢。我也读了类似的问题,并试图这种方法http://codeexperiment.com/post/Returning-LINQ-to-SQL-Entities-From-WCF.aspx whree设置DataLoadOptions和dlo.LoadWith(E =>即命令);在查询之前,它做了诀窍。 –
kiev