【问题标题】:EF Core Select query with null references具有空引用的 EF Core Select 查询
【发布时间】:2021-06-04 15:16:54
【问题描述】:

我有一个Select 查询,它对子导航属性执行检查,然后检查另一个引用的属性。第一个子导航属性可以为空,但第二个属性 isRequired() 并且如果数据库中的第一个子导航属性不为空,则查询运行正常,但如果存在一个或多个行没有该属性的引用值,那么我得到 -

迭代查询结果时发生异常 为...

如何使用可选属性运行查询并为没有引用的记录返回 null。

await _dbContext.NewsBoard
    .AsNoTracking()
    .Select(item => new NewsResponse
    {
        Id = item.BoardId,
        MediaType = new MediaTypeResponse 
        { 
             Id = item.Media.MediaTypeId, 
             Name = item.Media.MediaType.Name 
        },

上面是我尝试运行的查询,item.Media 不存在其外键的值(其为空),因此预期结果将是 NewsResponse 的列表,其中 MediaType 为空有一个 null 引用了 item.Media

【问题讨论】:

    标签: entity-framework-core ef-code-first


    【解决方案1】:

    使用null 签入您的查询,例如 -

    await _dbContext.NewsBoard
            .AsNoTracking()
            .Select(item => new NewsResponse
            {
                Id = item.BoardId,
                MediaType = item.Media == null ? null : new MediaTypeResponse  // null check
                {
                    Id = item.Media.MediaTypeId,
                    Name = item.Media.MediaType.Name
                }
            })
            .ToList();
    

    【讨论】:

    • 哇,我完全看错了,我现在没有 EF Core 会接受这样的三元组。感谢您的提示
    猜你喜欢
    • 2019-07-22
    • 2017-06-20
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多