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