Я пару дней изучал луковую архитектуру. Я понимаю, что зависимости всегда должны идти к центру, и как для этого использовать внедрение зависимостей. Но у меня есть пара вопросов, которые я до сих пор не могу понять.
Может ли модель (или объект )ссылаться на интерфейс репозитория или сервисный интерфейс?
Например, :объект Order
имеет DeliveryCity
отношение, установленное через свойство Oder.DeliveryZip
, которое не является внешним ключом, но является уникальным. Чтобы получить Город за зип, я должен позвонитьICityRepository.FindByZip(zip)
У меня в модели есть следующий код
class Order
{
...
[Inject]
public ICityRepository CityRepository { get; set; }
private City _dCity;
public City DeliveryCity {
get {
if (_dCity == null)
_dCity = this.CityRepository.FindByZip(this.DeliveryZip);
return _dCity;
}
}
...
}
Какие проблемы могут быть у приведенного выше кода? Должен ли он вместо этого использовать службу домена?
Должны ли реализации доменных служб определяться внутри ядра или на уровне инфраструктуры?