这里是一个示例模式,其中 “=>” 代表 “一个一对多” 的关系:
合同=> ContractCustomers
合同=> ContractDiscounts
顾客=> ContractCustomers
DiscountType => ContractDiscounts
我试图通过一次调用服务器来检索合同对象及其所有相关详细信息。
到目前为止,我用LoadWith:如何检索LINQ对象及其所有相关信息?
using (Data.ABWXDataContext db = new Data.ABWXDataContext())
{
DataLoadOptions options = new DataLoadOptions();
options.LoadWith<Data.Contract>(c => c.ContractCustomers);
options.LoadWith<Data.Contract>(c => c.ContractDiscounts);
options.LoadWith<Data.ContractDiscount>(c => c.DiscountType);
options.LoadWith<Data.ContractCustomer>(c => c.Customers);
db.LoadOptions = options;
var Contract = from con in db.Contracts
where con.ContractId == contractId
select con;
return Contract.ToList();
}
}
上面的代码工作正常,包括ContractDiscounts和ContractCustomers表。但它不能让我访问(折扣类型,客户)。我明白他们不是合同的子女,我怎样才能陪伴他们与合同对象?
我很抱歉,如果这是一个简单的常见任务。
我会去'VAR合同= db.Contracts .Where(c => c.ContractId == contractId;'并让方法返回'IQueryable',但我认为这不会解决你的问题。你能发布你的元数据定义的类。 – ChrisF
我知道, m不是很帮你,但是当涉及到更复杂的查询时,我也有点失落,但是似乎使用'JOIN'可能会使它工作。不确定的语法,你有没有尝试在你的包括'JOIN'查询? – Leron
http://msdn.microsoft.com/en-us/library/bb5 34268(v = vs.110).aspx#remarksToggle似乎无法完成。但是,它可能与实体框架。考虑使用它,而不是,因为它有积极的发展。 – Aron