【问题标题】:Navigation property is always null导航属性始终为空
【发布时间】:2019-12-27 22:56:23
【问题描述】:

默认情况下,导航属性始终为空 ef core (v3.1.0)

但是当我在早期加载时加载导航属性时它可以工作。

            var companies = context.Companies.Include(e=>e.Employees); // this works
            var e1 = companies.First().Employees;

            var companies = context.Companies; // this does n't work
            var e1 = companies.First().Employees; // error

我错过了什么吗?以下是重现问题的示例代码。

https://dotnetfiddle.net/#&togetherjs=75UdrcwNs7

谢谢, 神圣的

【问题讨论】:

    标签: entity-framework-core


    【解决方案1】:

    我找到了解决方案。

    添加 nuget 包 Microsoft.EntityFrameworkCore.Proxies

    在 DataContext 类上启用以下 (UseLazyLoadingProxies)

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Orders")
                .UseLazyLoadingProxies();
        }
    }
    

    【讨论】:

      【解决方案2】:

      不,你没有错过任何东西。应该像在您的第一个代码 sn-p 中一样手动加载相关属性。这是为了保持数据库操作简单高效,其想法是仅加载您在该操作中真正需要的内容。 更多信息:https://docs.microsoft.com/en-us/ef/core/querying/related-data

      当然,您可以像上面的答案那样使用延迟加载,但通常不建议这样做。

      【讨论】:

        猜你喜欢
        • 2021-10-07
        • 1970-01-01
        • 1970-01-01
        • 2019-12-11
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多