Entity Framework Базовая карта, связанная с сущностью, только если она не равна нулю - PullRequest
2 голосов
/ 06 ноября 2019

У меня есть эти 2 класса, Process и Task. Задача является связанной сущностью и является необязательной. Я хочу иметь возможность сопоставить свойства задачи при выборе, только если это не нуль. Как мне справиться с этим?

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;}
}

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019
TaskDescription = p.Task?.Description

Приведенный выше код установит для TaskDescription значение NULL, если для задачи задано значение NULL.

2 голосов
/ 06 ноября 2019

p.Task == null ? "" : p.Task.Description

...