Я реализовал шаблон хранилища. У меня есть классы базовой модели, которые являются не более чем стандартными классами C#. У меня есть классы репозитория для каждой модели. У меня есть класс DbContext
. Я использую Ninject, поэтому все, кроме моих моделей, сначала определяется как интерфейсы. Прямо сейчас, чтобы получить доступ к моим данным, мой код выглядит следующим образом:Как перейти от отдельных репозиториев к уровню обслуживания?
using (var context = m_kernel.Get<IPortalContext>())
{
var accounts = m_kernel.Get<IAccountRepository>(new ConstructorArgument("context", context));
foreach (var account in accounts.All())
{
Assert.IsNotNull(account);
}
}
Примечание: Я не уверен, если есть лучший способ сказать, что я хочу передать этот контекст в конструктор IAccountRepository, но это для в другой раз.
Как вы можете видеть, для моих классов репозитория требуется экземпляр контекста. Это значит, что я работаю в одном и том же контексте, как единица работы.
Вопрос в том, как я могу представить сервисный уровень для моей бизнес-логики? Прямо сейчас у моих репозиториев просто есть простые методы Get, Delete, All, Insert. Я хочу уровень сервиса для своей конкретной бизнес-логики и проверки. Каков наилучший способ сделать это?
На первый взгляд, я мог бы просто сделать классы обслуживания, подобно моим классам репо, которые принимают контекст и выполняют бизнес-логику, а затем используют класс репо. Это в основном спрятало бы хранилища.
Это хороший подход?