ASP.net Core загружается, пусть включенный объект будет нулевым - PullRequest
0 голосов
/ 05 октября 2018

Я получаю всех клиентов, включая их связанного оператора.Единственный улов - клиент может существовать без оператора.Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь включить оператора, любой клиент, у которого нет связанного оператора, не извлекается, есть ли способ по-прежнему извлекать всех моих клиентов, и если у вас нет оператора, просто поместите объект оператора внутриcustomer be null?

-принимать всех клиентов метод

public List<Customer> GetAllWithRelations()
    {
        return Context.Set<Customer>()
            .Include(cp => cp.Operator).ToList();
    }

-Cusomer объект

public class Customer
{
    public int Id { get; set; }

    public string Name { get; set; }        

    public int? OperatorId { get; set; }

    [ForeignKey("OperatorId")]
    public virtual Operator Operator { get; set; }
}

-Operator Object

public class Operator
{
    public int Id { get; set; }
    public string Name { get; set; }
}

1 Ответ

0 голосов
/ 05 октября 2018

Хотя вы не указали тег для этого, используя .Include Я предполагаю, что это EntityFramework Core linq, который ломается.

Я сталкивался с одним и тем же случаем на EF всякий раз, когдаотношение не установлено, чтобы разрешить нули.Так, например, ваше отображение может явно задавать его как обязательное или каким-то образом вы не устанавливаете его, и значения по умолчанию EF устанавливают требуемую карту между Customer и Operator.

Просто установите его нанеобязательно, где бы вы ни создавали сопоставления моделей, и вы получите желаемое поведение.Смотри: https://docs.microsoft.com/en-us/ef/core/modeling/required-optional

...