Почему Entity Framework возвращает для свойства пустую коллекцию вместо нуля?C#

Место общения программистов C#
Ответить
Anonymous
 Почему Entity Framework возвращает для свойства пустую коллекцию вместо нуля?

Сообщение Anonymous »

У меня есть модель Entity Framework, имеющая следующее свойство:
public List? VanMapEventTypes { get; set; }

Затем я читаю объект, используя:
var @event = await dbContext.Events
.Include(e => e.ApptShifts)
.Include(e => e.Occurrences)
.Include(e => e.Owner)
.Include(e => e.Parent)
.FirstOrDefaultAsync(e => e.Id == updateEvent.EventId, stoppingToken);

Это возвращает @event.Parent.VanMapEventTypes == пустое значение List().
Если я добавлю:
var @event = await dbContext.Events
.Include(e => e.ApptShifts)
.Include(e => e.Occurrences)
.Include(e => e.Owner)
.Include(e => e.Parent)
.ThenInclude(o => o.VanMapEventTypes)
.FirstOrDefaultAsync(e => e.Id == updateEvent.EventId, stoppingToken);

Затем он возвращает @event.Parent.VanMapEventTypes с ожидаемыми 11 элементами в списке List().
Почему он не возвращает @event.Parent.VanMapEventTypes == null при первом вызове?

public class Organization
{
public int Id { get; private set; }
public List? VanMapEventTypes { get; set; }
// lots of other properties

public Organization(string uniqueId)
{
ArgumentException.ThrowIfNullOrEmpty(uniqueId);

Enabled = true;
Private = false;
Deleted = false;

UniqueId = uniqueId;
// initialize this because the data is in the Campaign table so logically its never null.
Address = new Address();

VanMapEventTypes = new List();
}
}

public class Event
{
public int Id { get; private set; }
public Organization Parent { get; set; }
// lots of other properties
}

public class MapInterestToVanType
{
public int Id { get; private set; }
public string InterestName { get; set; }
public string VanEventTypeName { get; set; }
}


Подробнее здесь: https://stackoverflow.com/questions/789 ... -for-a-pro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»