Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 在禁用代理的情况下加载多级嵌套导航和集合属性_Azure_Entity Framework 6_Linq To Entities_Azure Sql Database - Fatal编程技术网

Azure 在禁用代理的情况下加载多级嵌套导航和集合属性

Azure 在禁用代理的情况下加载多级嵌套导航和集合属性,azure,entity-framework-6,linq-to-entities,azure-sql-database,Azure,Entity Framework 6,Linq To Entities,Azure Sql Database,我很难弄清楚如何在禁用代理和延迟加载以序列化结果的情况下,使用交替收集和导航属性级别执行查询 public ApplicationDbContext() : base("Debug") { this.Configuration.LazyLoadingEnabled = false; this.Configuration.ProxyCreationEnabled = false; } 实体如下

我很难弄清楚如何在禁用代理和延迟加载以序列化结果的情况下,使用交替收集和导航属性级别执行查询

public ApplicationDbContext()
            : base("Debug")
        {
            this.Configuration.LazyLoadingEnabled = false;
            this.Configuration.ProxyCreationEnabled = false;
        }
实体如下所示(省略非导航或非集合):

但是,我得到一个空的概念列表:

[{
  "id": 324,
  "conceptos": {
    "concepto": []
  }
},
{
  "id": 340,
  "conceptos": {
    "concepto": []
  }
}
}]
甚至像下面这样更简单的查询也会产生完全相同的结果:

comprobantes = _db.Comprobante
            .Include(c => c.Conceptos.Concepto.Select(co => co.Impuestos));
当调试为空时检查对象时,我知道不是序列化:


我做错了什么?

多亏了David comment,我才能够构建一个有效的查询:


如果需要大型图形,请尝试分别加载每个实体,并让DbContext修复导航属性。谢谢@DavidBrowne Microsoft的帮助。我看不出这有助于加载
concepto
列表。添加
.Include(b=>b.Conceptos)
没有任何效果,因为
Include(b=>b.Conceptos.Concepto….
已经这样做了。那么这个
Concepto
如何列出呢?另外,
foreach
循环中的语句没有做任何事情,因为它们只创建了暂时的
IQueryable
而没有执行。@GertArnold我不能假装我知道EF内部工作的细节,但我基于根据David的建议,我猜这个解决方案通过将它们加载到上下文EF将自动修复关系。你是对的。Include(b=>b.Conceptos)。它没有效果。我正在删除它。
[{
  "id": 324,
  "conceptos": {
    "concepto": []
  }
},
{
  "id": 340,
  "conceptos": {
    "concepto": []
  }
}
}]
comprobantes = _db.Comprobante
            .Include(c => c.Conceptos.Concepto.Select(co => co.Impuestos));
var comprobantes = _db.Comprobante
            .Include(b => b.Conceptos.Concepto.Select(c => c.Impuestos.Retenciones.Retencion))
            .Include(b => b.Conceptos.Concepto.Select(c => c.Impuestos.Traslados.Traslado));
foreach (var comprobante in comprobantes)
{
    _db.ComprobanteTraslado.Where(t => t.ComprobanteId == comprobante.Id);
    _db.ComprobanteRetencion.Where(r => r.ComprobanteId == comprobante.Id);
}