我有这个 linq 查询。它抱怨警告消息。
警告 CS8603:可能返回空引用
代码:
return await _applicationDbContext.Pies
.Include(x => x.Portions).AsSingleQuery()
.Include(x => x.Ingredients).AsSplitQuery()
.SingleOrDefaultAsync(x => x.Id == id);
Run Code Online (Sandbox Code Playgroud)
更重要的是,这使得它变得丑陋,到处都是曲线。
有什么办法可以解决吗?
看了下面的SO帖子,但不知道该怎么做。
SingleOrDefaultAsync()
完全执行方法名称中的操作,它尝试查找单个条目,如果未找到任何条目,则返回默认值。
引用类型(Pie
在本例中为您的对象)的默认值是 null,因此会出现警告。
您可以返回Task<Pie?>
或以某种方式处理空值。一种方法是使用.SingleAsync()
替代方法,如果没有找到任何内容,它将抛出异常 - 但因此它永远不会返回 null。
该方法返回一个Task<Pie>
.
末尾的has意味着如果找不到匹配的项目return ...
,它将返回。SingleOrDefaultAsync(...)
id
default(Pie)
null
您需要决定是否:
Task<Pie?>
让调用代码知道它可以返回 null。SingleAsync(...)
这样如果未找到匹配,它将引发运行时异常id
。 归档时间: |
|
查看次数: |
2186 次 |
最近记录: |