带有空引用的 EF Core Select 查询
EF Core Select query with null references
我有一个 Select
查询,它对子导航 属性 执行检查,然后检查另一个引用的 属性。第一个子导航 属性 可以为空,但第二个 属性 isRequired()
并且如果第一个子导航在数据库中不为空,则查询 运行 可以,但是如果一个或存在更多没有该 属性 引用值的行,然后我得到 -
An exception occurred while iterating over the results of a query
for...
如何使用可选 属性 运行 和 return 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,其中引用了 null item.Media
。
使用 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();
我有一个 Select
查询,它对子导航 属性 执行检查,然后检查另一个引用的 属性。第一个子导航 属性 可以为空,但第二个 属性 isRequired()
并且如果第一个子导航在数据库中不为空,则查询 运行 可以,但是如果一个或存在更多没有该 属性 引用值的行,然后我得到 -
An exception occurred while iterating over the results of a query for...
如何使用可选 属性 运行 和 return 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,其中引用了 null item.Media
。
使用 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();