C# Linq获取子项

C# Linq获取子项,c#,entity-framework,C#,Entity Framework,当我在EF模型上执行lunq查询时,它不会很好地得到子实体吗?我有一个交易表,它有一个指向收款人的链接,还有一个交易类型实体。此外,每个事务都有一个事务行列表 但是代码如下-所有的子对象都是空的,但是实际实体(日期)中的数据看起来还可以。但是在这行中:t.account.account\u id;…'帐户“”为空 public static List<AccountTransactionDto> GetTransaction() { var trans =

当我在EF模型上执行lunq查询时,它不会很好地得到子实体吗?我有一个交易表,它有一个指向收款人的链接,还有一个交易类型实体。此外,每个事务都有一个事务行列表

但是代码如下-所有的子对象都是空的,但是实际实体(日期)中的数据看起来还可以。但是在这行中:t.account.account\u id;…'帐户“”为空

 public static List<AccountTransactionDto> GetTransaction()
    {
        var trans = (from t in Db.account_transaction
                     select t).ToList();
        List<AccountTransactionDto> al = new List<AccountTransactionDto>();

        foreach(var t in trans)
        {
            AccountTransactionDto a = new AccountTransactionDto();
            a.AccountId = t.account.account_id;
            a.AccountTransactionId  = t.account_transaction_id;
            a.PayeeId = t.payee.payee_id;
            a.TransactionDate = t.transaction_date;
            a.TransactionTypeId = t.z_transaction_type.transaction_type_id;

            foreach(var tl in t.account_transaction_line)
            {
                AccountTransactionLineDto l = new AccountTransactionLineDto();
                l.AccountTransactionLineId = tl.account_transaction_line_id;
                l.Amount = tl.amount;
                l.BudgetId = tl.budget.budget_id;
                l.CostCenterId = tl.cost_centre.cost_centre_id;
                l.SubCategoryId = tl.sub_category.sub_category_id;
                a.AccountTransactionLine.Add(l);
            }

            al.Add(a);
        }
        return al;
    }
公共静态列表GetTransaction()
{
var trans=(从Db.account\U事务中的t开始)
选择t.ToList();
列表al=新列表();
foreach(变量t在trans中)
{
AccountTransactionDto a=新的AccountTransactionDto();
a、 AccountId=t.account.account\u id;
a、 AccountTransactionId=t.account\u transaction\u id;
a、 PayeId=t.payee.payee\u id;
a、 TransactionDate=t.交易日;
a、 TransactionTypeId=t.z_transaction_type.transaction_type_id;
foreach(t.账户交易行中的var tl)
{
AccountTransactionLineDto l=新的AccountTransactionLineDto();
l、 AccountTransactionLineId=tl.account\u transaction\u line\u id;
l、 金额=总金额;
l、 BudgetId=tl.budget.budget\u id;
l、 CostCenterId=tl.cost\u center.cost\u center\u id;
l、 子类别id=tl.sub_category.sub_category_id;
a、 AccountTransactionLine.Add(l);
}
al.添加(a);
}
返回al;
}

需要在数据上下文中启用延迟加载

Db.ContextOptions.LazyLoadingEnabled = true;
或者您需要显式地告诉EF加载关联。i、 e


var trans=(从Db.account_transaction.Include('account')中的t开始。Include('paye')选择t)。ToList()

需要在数据上下文中启用延迟加载

Db.ContextOptions.LazyLoadingEnabled = true;
或者您需要显式地告诉EF加载关联。i、 e


var trans=(从Db.account_transaction.Include('account')中的t开始。Include('paye')选择t)。ToList()

您有两个选择。您可以通过以下方式启用延迟加载:

Db.ContextOptions.LazyLoadingEnabled = true;
或者,如果将查询行更改为此(Include的确切语法可能不正确):


然后,它应该在单个结果集中回调子记录和父记录。但是如果有大量数据,这会导致性能下降。

您有两个选择。您可以通过以下方式启用延迟加载:

Db.ContextOptions.LazyLoadingEnabled = true;
或者,如果将查询行更改为此(Include的确切语法可能不正确):

然后,它应该在单个结果集中回调子记录和父记录。但是,如果存在大量数据,这会导致性能下降