【问题标题】:How to resolve "Deference of a possible null reference" warning?如何解决“可能的空引用的延迟”警告?
【发布时间】:2021-11-10 00:51:41
【问题描述】:

使用 EF Core 5,启用 Nullable,.NET Core 5。

执行此操作时收到警告:

myDBContext.Entity.SingleOrDefaultAsync(e => e.Property == value)

警告的波浪线位于 lambda 中的第二个 e 下方。

我知道我可以将 TSource 更改为 ,但我明确希望它返回可为空的实体,因此调用者很清楚他们可以从此调用中获取 null,因为它是 SingleOrDefault。

我希望我能正确解决这个问题,而不是通过 !或压制消息,有什么想法吗?

编辑 如果你看到这个例子 https://dotnetfiddle.net/baP5JV

问题不存在,这仅与 EF Core 有关吗?

【问题讨论】:

    标签: .net-core entity-framework-core nullable


    【解决方案1】:

    您可以尝试使用空条件运算符:

    myDBContext.Entity.SingleOrDefault<Entity?>(e => e != null && e.Property == value)
    

    参考:Null-conditional operators ?. and ?[]

    编辑:

    更新为不使用空条件。

    【讨论】:

    • 它没有,它会将所有 e.Property 变为红色/错误。 “表达式树 lambda 可能不包含空传播运算符”。无论如何,我真的不想解决!还是?
    • 编辑显示你可以在没有空条件运算符的情况下做同样的事情
    【解决方案2】:

    在 SingleOrDefaultAsync 调用中添加 await 并将存储库方法标记为异步后,警告消失了。 不理想,因为我真的想返回 Task

    我暂时不接受这个答案,看看我是否能得到解决方案或至少一个解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2013-04-29
      • 2015-01-13
      • 1970-01-01
      相关资源
      最近更新 更多