【发布时间】:2016-05-10 19:53:51
【问题描述】:
我正在使用 Linq to SQL 类进行数据提取,并具有以下实体:
- 客户 -> 订单
Customer 和 Order 通过 CustomerID 上的 FK 约束链接,并以这种关系出现在我的 .dbml 文件中
当我通过智能感知访问对象属性时,我可以看到 Customer.Name, Customer.Address 等,还可以看到链接的订单实体 Customer.Orders
我的问题是,当我查询数据库以仅填充 Customer 实体并处理 Datacontext 时,我得到一个错误抛出
无法访问已处置的对象。对象名称:'DataContext 已访问 处理后。'。
public IEnumerable<Customer> GetCustomer(Int32 customerID)
{
// initialise
Customer cust = new Customer();
using (CustomerManager ctl = new CustomerManager())
{
// get customer, this returns a single customer entity
// i.e. datacontext.Customers.Where(m=> m.CustomerID == customerID).FirstOrDefault();
cust = ctl.SelectCustomer(customerID);
}
yield return cust;
}
我已尝试将其更改为存储过程,即Customer_SelectResult,并且效果很好。这是我使用表格的时候。
有什么办法可以防止子表引起这个问题?
提前致谢
【问题讨论】:
-
只是出于好奇,如果给定 id 只有一个客户,为什么要返回 IEnumerable
? -
是的,只有一个客户,但它仍然会抛出错误。
标签: c# json asp.net-mvc asp.net-web-api linq-to-sql