0

Я понимаю, что репозиторий должен отвечать за CRUD в шаблоне репозитория. Мой вопрос: должен ли репозиторий отвечать за обновление указанного поля модели, хранящегося во внешней службе?Должен ли репозиторий отвечать за обновление указанного поля модели, хранящегося во внешней службе?

Например:

  • Данные UserAccount хранятся во внешнем веб-службы.
  • Пользователь может иметь несколько UserAccount
  • приложения, пользователь может выбрать цель UserAccount и может обновить displayName из UserAccount
  • Есть некоторые слова, не допускается использовать в DISPLAYNAME и приложение не знает, что такое эти слова.

pesdocode:

public class MainController 
{ 
    IUserAccountService userAccountService; // injected 

    public void Main() 
    { 
     userAccountService.GetUsers().Then (UpdateUserView); 
    } 

    // ... 

    void OnUserAccountSelected (UserAccount selectedUserAccount, string newDisplayName) 
    { 
     userAccountService.UpdateDisplayName (selectedUserAccount, newDisplayName) 
     .Then (UpdateUserView) 
     .Catch<WordInDisplayNameNotAllowedException> (HandleWordInDisplayNameNotAllowedException) 
     .Catch (HandleError); 
    } 
} 

public class UserAccountService : IUserAccountSercie 
{ 
    IUserAccountRepository repository; // injected 

    // ... 

    public Promise<UserList> GetUsers() 
    { 
     return repository.GetAll(); 
    } 

    public UpdateDisplayName (UserAccount userAccount, string newDisplayName) 
    { 
     // Should I like the following? 
     repository.UpdateDisplayName (userAccount, newDisplayName); 
    } 
} 

public class UserAccountRepository : IUserAccountRepository 
{ 
    public Promise<UserList> GetAll() 
    { 
     // request to external web service... 
    } 

    public Promise<UserAccount> UpdateDisplayName (UserAccount userAccount, string newDisplayName) 
    { 
     // request to external web service... 
    } 
} 

Где я должен поставить коды для вызова веб-API для обновления UserAccount::displayName?

+0

Репозиторий - это место, где можно совершить звонок по обновлению. В этом случае внешний веб-API - это ваше хранилище данных, поэтому поставьте хранилище, отвечающее за его работу. – dbugger

ответ

1

Использование логики использования, как это должно быть сделано в прикладной службе . Репозиторий должен заботиться только об обновлении целых агрегатов.

Я думаю, что this answer of mine предоставит достаточно информации о службах приложений, чтобы указать вам в правильном направлении.

Смежные вопросы