У меня есть две сущности - User
и Plan
class Plan
{
public int Id { get; set; }
public string Name { get; set; }
public string FieldA { get; set; }
public string FieldB { get; set; }
...
}
class User
{
public int Id { get; set; }
public string Name { get; set; }
public int PlanId { get; set; }
public Plan Plan { get; set; }
}
Я хочу выбрать конкретного пользователя и заполнить его Plan
свойством, но только с конкретными полями (Id
и Name
).Я знаю, что это должно быть просто, мне просто нужно написать
db.Users
.Select(u => new User()
{
Id = u.Id,
Name = u.Name,
PlanId = u.PlanId,
Plan = new Plan()
{
Id = u.Plan.Id,
Name = u.Plan.Name
}
})
.SingleOrDefault(u => u.Id == 1);
Хитрость в том, что Plan
является необязательным (не в том смысле, что PlanId может быть нулевым, но в том смысле, что PlanId можетуказывает на объект Plan, который не существует).
Когда Plan
существует, все работает, как и ожидалось, но когда этого не происходит, свойство Plan
все еще заполняется, с Id
но с нулевым Name
Пример:
{
"Id": 1,
"Name": "some name..",
"PlanId": 9, // There is no Plan object with Id = 9
"Plan": {
"Id": 9,
"Name": null
}
}
Я ожидаю, что Plan
будет нулевым.Как мне этого добиться?
Спасибо