我正在尝试使用 linq to sql 对名为 Customers 的父实体执行简单的选择,该实体在我的 dbml 设计器中与名为 Projects 的实体具有一对多的关系。
通过连接,我可以访问两个实体的列属性:
using (DataClasses1DataContext DbContext = new DataClasses1DataContext())
{
var query2 = DbContext.Customers
.Join(DbContext.Projects, c => c.CustomerID, p => p.CustomerID,
(c, p) => new
{
c.Email,
p.Customer
});
}
但是,在简单选择期间(使用任何 query1、2 或 3 变量),我不知道为什么延迟加载不显示 Projects 实体的任何列属性(使用智能感知)。我知道 query1 和 query2 会返回列表,而 query3 只会返回一条记录。
如何正确使用延迟加载并访问 Project 子实体中的列属性?
另外,如果我可以通过延迟或急切加载访问那些相同的子列,为什么要在相关实体上使用 JOIN?
using (DataClasses1DataContext DbContext = new DataClasses1DataContext())
{
//var dataLoadOptions = new DataLoadOptions();
//DbContext.LoadOptions.LoadWith<Customer>(n => n.Projects);
//var query1 = DbContext.Customers.Where(c => c.CustomerID > 0);
//var query2 = DbContext.Customers.Where(c => c.CustomerID > 0).Select(c => new { c.CustomerID, c.Projects });
var query3 = DbContext.Customers.Where(c => c.CustomerID == 1).FirstOrDefault();
query3.Projects.
}
编辑 #1: var query1 = DbContext.Customers.Where(c => c.CustomerID > 0);
foreach (var c in query1)
{
c.Projects.
}