Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅当实体框架核心映射相关实体不为空时_C#_Asp.net Core_Entity Framework Core_Razor Pages - Fatal编程技术网

C# 仅当实体框架核心映射相关实体不为空时

C# 仅当实体框架核心映射相关实体不为空时,c#,asp.net-core,entity-framework-core,razor-pages,C#,Asp.net Core,Entity Framework Core,Razor Pages,我有这两个类,进程和任务。任务是一个相关实体,是可选的。我希望仅当select不为空时,才能将任务属性映射到select上。我怎么处理 public class Process { public int Id {get;set;} public string Description {get;set;} public int? TaskId {get;set;} public Task Task {get;set;} } public class Task {

我有这两个类,进程和任务。任务是一个相关实体,是可选的。我希望仅当select不为空时,才能将任务属性映射到select上。我怎么处理

public class Process
{
    public int Id {get;set;}
    public string Description {get;set;}
    public int? TaskId {get;set;}
    public Task Task {get;set;}
}

public class Task
{
    public int Id {get;set;}
    public string Description {get;set;}
}
在我的剃须刀页面上

public PageViewModel Process {get;set;}
[BindProperty(SupportsGet = true)]
public int Id { get; set;}
public void OnGet()
{
    Process = _context.Processes
                  .Select(p => new PageViewModel
                  {
                      Id = p.Id,
                      Description = p.Description,
                      HasTask = p.TaskId.HasValue,
                      TaskDescription = p.Task.Description // How to handle if task is null here?
                  })
                  .FirstOrDefault(p => p.Id == Id)

}

public class PageViewModel
{
    public int Id{get;set;}
    public string Description {get;set;}
    public bool HasTask {get;set;}
    public string TaskDescription {get;set;}
}
p、 任务==null?:p、 Task.Description

TaskDescription=p.Task?.Description
如果Task为null,上面的代码会将TaskDescription设置为null。

但是如果Task因为不存在并试图访问null内存而未初始化,这不会引发null引用异常吗?此链接提供了关于问号运算符的进一步详细说明。这是你的解决方案吗?我明白了,我想我现在明白了。我知道terniary操作符,但我以前从未这样使用过。感谢您的解释这里确实有一些表达式您不能在针对您的上下文的LINQ查询中使用。我没有考虑过。您还可以首先从数据库中检索记录,然后将其强制转换到PageViewModel。供进一步参考:这是不正确的。它将返回null,而不是空字符串