gpt4 book ai didi

c# - 如何使用 mvc4 C# 在我的 linq 中将多个表包含到实体急切加载中

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:18 25 4
gpt4 key购买 nike

我有 6 个类,我尝试对实体使用 linq 来获取最后一个更深表(在 View - MVC 中)的 SiglaUF 信息。问题是我收到以下错误:

“ObjectContext 实例已被释放,不能再用于需要连接的操作。”

View 是这样的:

>     @model IEnumerable<DiskPizzaDelivery.Models.EnderecoCliente>
> @foreach (var item in Model) {
> @Html.DisplayFor(modelItem => item.CEP.Cidade.UF.SiglaUF)
> }

我使用的查询:

 var cliente = context.Clientes
.Include(e => e.Enderecos)
.Include(e1 => e1.Enderecos.Select(cep => cep.CEP))
.SingleOrDefault();

问题是:如何改进此查询以预加载(预加载)“Cidade”和“UF”?

参见下面的类:

public partial class Cliente
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int IdCliente { get; set; }
public string Email { get; set; }
public string Senha { get; set; }
public virtual ICollection<EnderecoCliente> Enderecos { get; set; }
}
public partial class EnderecoCliente
{
public int IdEndereco { get; set; }
public int IdCliente { get; set; }
public string CEPEndereco { get; set; }
public string Numero { get; set; }
public string Complemento { get; set; }
public string PontoReferencia { get; set; }
public virtual Cliente Cliente { get; set; }
public virtual CEP CEP { get; set; }
}
public partial class CEP
{
public string CodCep { get; set; }
public string Tipo_Logradouro { get; set; }
public string Logradouro { get; set; }
public string Bairro { get; set; }
public int CodigoUF { get; set; }
public int CodigoCidade { get; set; }
public virtual Cidade Cidade { get; set; }
}
public partial class Cidade
{
public int CodigoCidade { get; set; }
public string NomeCidade { get; set; }
public int CodigoUF { get; set; }
public virtual ICollection<CEP> CEPs { get; set; }
public virtual UF UF { get; set; }
public virtual ICollection<UF> UFs { get; set; }
}
public partial class UF
{
public int CodigoUF { get; set; }
public string SiglaUF { get; set; }
public string NomeUF { get; set; }
public int CodigoCidadeCapital { get; set; }
public virtual ICollection<Cidade> Cidades { get; set; }
public virtual Cidade Cidade { get; set; }
}

var cliente = context.Clientes
.Where(c => c.Email == email)
.Where(c => c.Senha == senha)
.Include(e => e.Enderecos)
.Include(e1 => e1.Enderecos.Select(cep => cep.CEP))
.SingleOrDefault();

谢谢!

最佳答案

您可以简单地包含整个导航路径。

 var cliente = context.Clientes
.Include(e => e.Enderecos)
.Include(e1 => e1.Enderecos.Select(cep => cep.CEP.Cidade.UF))
.SingleOrDefault();

关于c# - 如何使用 mvc4 C# 在我的 linq 中将多个表包含到实体急切加载中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19671768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com