Скажем, у меня есть простая модель, подобная этой (небольшая часть довольно большого приложения)
public class EHR : IEntity
{
public int ID { get; set; }
public string UserName { get; set; }
public DateTime CreationDate { get; set; }
public virtual ICollection<PhysicalTest> PhysicalTests { get; set; }
}
public class PhysicalTest : IEntity
{
public int ID { get; set; }
public virtual EHR Ehr { get; set; }
public Boolean IsDeleted { get; set; }
}
И я хочу простой способ получить физические тесты, которые НЕ удаляются для данной EHR.
Итак, я могу придумать три способа сделать это.
один - просто добавить метод в мой класс EHR. (Это не кажется плохой идеей, потому что я не хочу страдать от модель анемичного домена )
public IEnumerable<PhysicalTest> ActivePhysicalTests()
{
return this.PhysicalTests.Where(!m=>m.IsDeleted).ToList();
}
другой создает метод расширения в классе EHRRepositoryExtensions:
public static class EHRRepositoryExtensions
{
public static IEnumerable<PhysicalTest> Active(this IEnumerable<PhysicalTest> physicalTests)
{
return physicalTests.Where(test => !test.IsDeleted).OrderByDescending(test => test.CreationDate).ToList();
}
}
Я также думаю, что мог бы расширить свой IRepositoryвключить метод, который возвращает только physsicalTests, которые не были удалены.
что-то вроде
public class EHRRepository : IRepository<EHR>
{
//TODO: method that returns only the physsicalTests that arent deleted.
}
Я все еще пытаюсь понять многие концепции DDD и хочу, чтобы он был максимально чистым.
Какой из этих подходов вы бы порекомендовали?Какое практическое правило для подобных тем?
Пожалуйста, помогите.