我有这三款
public class Resposta
{
[Key]
public int Id { get; set; }
public string PerguntaAlias { get; set; }
public virtual Pergunta Pergunta { get; set; }
public int JustificativaId { get; set; }
public virtual Justificativa Justificativa { get; set; }
public string Descricao { get; set; }
}
public class Justificativa
{
[Key]
public int Id { get; set; }
public string NumeroOC { get; set; }
public string Objeto { get; set; }
}
public class Pergunta
{
[Key]
public string Alias { get; set; }
public string Descricao { get; set; }
public Categoria Categoria { get; set; }
public Subcategoria? Subcategoria { get; set; }
[Display(Name = "Obrigatório")]
public bool Obrigatorio { get; set; }
}
但是当我尝试将延迟加载与“Resposta”一起使用时,它仅适用于模型“Justificativa”,模型“Pergunta”为空。
我不知道是否会发生这种情况,因为“Pergunta”的主键是一个字符串。
我不想使用“包含”,为什么会发生这种情况? (DB上的FK都可以)
无法重现。根据调试器中显示的类型,您实际上并未启用延迟加载,否则我会期望
Justificativa
的类型类似于 JustificativaProxy
。您看到的效果只是由于更改跟踪而修复关系的结果 - 似乎您之前已经加载了 Justificativa
的实例(用于 Id 过滤的实例)。
Microsoft.EntityFrameworkCore.Proxies
并在设置时调用UseLazyLoadingProxies
DbContextOptions
:
services.AddDbContext<AppDbContext>(b => b.Use...(...)
.UseLazyLoadingProxies());
了解更多: