Z>А как это правильно сделать?
public sealed class Tovar {
// Дефолтный конструктор
public Tovar(... /* тут какие-то обязательные свойства, без которых сущность "товар" не имеет смысла */ ) {}
// Конструктор, который используется только при поднятии из БД.
// Обычным потребителям класса он недоступен (internal), им будет пользоваться только код репозиториев.
internal Tovar(..., IEnumerable<Analog> analogs) {
_analogs = new List<Analog>(analogs);
}
// Внутри работаем с обычным список, наружу выставляем как только для чтения
private List<Analog> _analogs = new();
public IReadOnlyCollection<Analog> Analogs { get; } => _analogs;
// Контролируемое добавление аналогов (если нужно)
public void AddAnalog(Analog analog) {
// TODO: здесь бизнес-логика по добавлению аналога (e.g. проверка дубликатов и т.п.)
_analogs.Add(analog);
}
}