Мне нужна помощь по совместному использованию шаблона IRepository <> и SOA.
Я занимаюсь разработкой бухгалтерского приложения, которое включает в себя очень сложную бизнес-логику. В настоящее время я использую IRepository в качестве DAL, который выполняет только базовые функции CRUD +, такие как обеспечение интерфейса IQueryable, некоторые функции кэширования и т. д.
Кроме того, у меня есть слой BusinessLogic, который играет роль слоя Service или Facade (это одно и то же?). вся логика приложения заключена здесь в качестве методов, которые будут использоваться на уровне презентации.
как я уже сказал, все базовые CRUD размещаются в репозиториях, но, кроме того, это происходит в BusinessLogic, например, у нас могут быть только эти основные методы в нашем репозитории Account:
public class AccountRepository
{
public IList<Accounts> GetAll()
{
...
}
public Accounts Get(int id)
{
...
}
public IList<Accounts Where(Func<Accounts,bool> criteria)
{
...
}
public Accounts Add(Accounts item)
{
...
}
}
но чтобы получить учетную запись с определенным номером, у нас была бы такая услуга:
public class AccountService
{
AccountRepository repos;
public Accounts FindByNumber(int AccountNumber)
{
return repos.Where(o=>o.AccountNumber == AccountNumber).FirstOrDefault();
}
}
AccountService также может иметь метод CreateAccount (), который добавляет несколько сущностей (учетную запись, владельца и ...) с помощью репозитория сущностей и в одной транзакции.
Теперь я хочу знать, правильно ли я их использую? или я пропустил некоторые моменты?