Предполагая, что у меня есть следующий объект POCO:
public class SomeEntity
{
public int SomeProperty { get; set; }
}
и следующий репозиторий
public class SomeEntityRepository
{
Context _context;
public SomeEntityRepository(Context context)
{
_context = context;
}
public List<SomeEntity> GetCrazyEntities()
{
return _context.SomeEntities.Where(se => se.SomeProperty > 500).ToList();
}
}
Затем по какой-то причине мне нужно реализовать вычисляемое свойство для SomeEntity, например:
class SomeEntity
{
...
public List<SomeEntity> WellIDependOnMyOnRepositry()
{
...
return theRepository.GetCrazyEntities().Where(se => se.SomeProperty < 505).ToList();
}
}
Как я могу справиться с тем, что объект POCO знает о репозитории/контексте, используя правильную реализацию UnitOfWork?
Я изучал IoC и внедрение зависимостей, но я слишком глуп, чтобы понять это из летучей мыши.
Какое-то просветление?
Ответ 1 · рейтинг 1 · Sergio Romero
Не прочитав обновление, которое вы упомянули в своем комментарии, я мог бы сказать, что вы должны получить Crazy Entities из репозитория в каком-то объекте службы домена, выполнить любые необходимые вам вычисления и присвоить результат своей сущности.
Кроме того, в идеале, если вы хотите изучить внедрение зависимостей (с нашим без контейнера IoC), ваш репозиторий должен реализовать интерфейс.
Что-то вроде следующего:
public interface ISomeEntityRepository
{
List<SomeEntity> GetCrazyEntities();
}
public class SomeEntityRepository : ISomeEntityRepository
{
// ... Implementation goes here.
}
public class MyDomainService
{
private readonly ISomeEntityRepository Repository;
public MyDomainService(ISomeEntityRepository repository)
{
Repository = repository;
}
public SomeEntity WorkWithCrazyEntity()
{
var something = Repository.GetCrazyEntities();
var result = //.... do all sort of crazy calculation.
var someEntity = new SomeEntity();
someEntity.CalculatedProperty = result;
return someEntity;
}
}
Надеюсь, это даст вам несколько идей. Возможно, после того, как вы обновите свой вопрос, я смогу лучше понять, что вам нужно.
С Уважением.