gpt4 book ai didi

c# - 延迟加载不适用于 Entity Framework 中的 POCO 类

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

请帮助我,我是 EF 的新手。POCO 对象的延迟加载似乎不起作用。

  • 我的 POCO 类在一个单独的程序集中,而不是用于数据访问的那个(即 DAL)
  • 数据访问层只是包装对 EF 对象上下文的调用。请看下面的代码

    public FilterMaster GetFilter(long ID)
    {
    FilterMaster entity = new FilterMaster();
    try
    {
    using (var context = new RadarEntities())
    {
    //context.ContextOptions.LazyLoadingEnabled = false;
    //context.ContextOptions.ProxyCreationEnabled = true;
    entity = context.FilterMasters.SingleOrDefault(filter => filter.ID == ID);
    //context.FilterMasters.Include(
    context.LoadProperty(entity, "SQLQuery");

    }
    }
    • 当 DAL 调用完成时,ObjectContext 丢失,当我试图获取 Root POCO 类的相关子对象时,我得到 null。
    • 我已尝试显式启用 ProxyCreation、EnabledLazyLoading,检查生成的代理类未密封,并且所有相关属性都标记为虚拟(如其他一些链接所建议的)。- 由于延迟加载不起作用,我想到急切地加载所有相关的 POCO 对象,因此尝试调用 LoadProperty 方法,它起作用了。

问题 1:我是否遗漏了延迟加载不起作用的内容?

问题 2:如果我想明确加载所有相关的子对象,必须为所有属性调用 LoadProperty 方法,或者有更简单的方法吗?

最佳答案

您正在处理您的 ObjectContext。这就是阻止您使用 LazyLoading 的原因。如果需要LazyLoading,包含GetFilter的类应该在创建时创建一个ObjectContext,实现IDisposable,并释放ObjectContext 当它被处置时。

关于c# - 延迟加载不适用于 Entity Framework 中的 POCO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917604/

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