Обычно я думал, что этот код хороший дизайн:Архитектурные бизнес-коллекции с частным сеттером в сервисный слой
Посмотрите на частный сеттер для коллекции. Поэтому никто не может назначить новую коллекцию извне объекта schoolclass.
public class Schoolclass
{
public Schoolclass()
{
Pupils = new List<Pupil>();
}
public int SchoolclassId { get; set; }
public string SchoolclassCode { get; set; }
public List<Pupil> Pupils { get; private set; }
}
Что касается этого стиля мои данные метод, забирающий больше не работает:
Service Layer делает вызовы к поставщику SQLite данных:
BL:
public IEnumerable<Schoolclass> GetAdministrationData()
{
var schoolclasses = adminDataProvider.GetSchoolclassList();
foreach (Schoolclass s in schoolclasses)
{
var pupils = adminDataProvider.GetPupilsBySchoolclassId(s.SchoolclassId);
s.Pupils = pupils;
foreach (Pupil p in pupils)
{
var documents = adminDataProvider.GetDocumentsByPupilId(p.Id);
p.Documents = documents;
}
}
return schoolclasses;
}
Если у меня будет теперь частный сеттер, вышеперечисленное объединение не будет работать.
У меня есть другой выбор? Или я должен придерживаться техники загрузки?
Я возвращаю IEnumerable, поэтому я не могу сделать .AddRange() –
Elisabeth
Это не то, что вы используете для кода образца. У вас есть другие возможности. Я бы выбрал ленивую загрузку, внутренняя частная область видимости может работать, если ваш загрузчик находится в одной сборке. – Neil
Почему список против коллекции плохо? Никогда не читал этого. И это не имеет смысла. Я предпочитаю загружать все, потому что у меня есть данные, кроме того, я использую WPF, который связан с привязкой данных. подключите коллекцию учеников к выбранному школьному классу, вызывая проблемы с привязанностью, как это было в прошлые времена. Лучше всего вернуть IEnumerable, потому что его интерфейс. –
Elisabeth