Таким образом, у меня есть растущее количество моделей баз данных, использующих List<T>
для своих «многих» навигационных свойств. Пример может быть таким:
public class ResourceType
{
public int ResourceTypeId { get; set; }
public string Name { get; set; }
public List<Resource> Resources { get; set; }
}
Я читал о хороших привычках при работе с С#, чтобы никогда не возвращать null
, а не пустой список. Я могу придумать пару способов добиться этого.
public List<Resource> Resources { get; set; } = new List<Resource>();
или, возможно, даже выполнив:
private List<Resource> _Resources { get; set; }
public List<Resource> Resources {
get {
if (_Resources == null) {
_Resources = new List<Resource> ();
}
return _Resources;
}
set {
_Resources = value;
}
}
В других местах люди рекомендуют использовать ICollection<T>
, и как можно предотвратить возврат null?
Между тем, эмпирическое правило при разработке моделей EF заключается в том, что модель должна максимально точно представлять таблицу. Нарушает ли это правило какой-либо из приведенных выше примеров?
Все это приводит меня к одному вопросу: как лучше всего обращаться с этим типом собственности? Какой тип следует использовать и следует ли предотвратить возврат null? и что лучше всего предотвратить в такой ситуации?