Хранить модель и репозиторий в отдельных проектах - PullRequest
2 голосов
/ 30 декабря 2010

У меня есть решение Visual Studio с несколькими проектами.

Я не на 100% согласен со структурой проекта и его преимуществами.

Например: у меня есть проект с именем DOMAIN. Здесь у меня есть несколько папок, таких как:

DOMAIN
|
|_Repository
  |__Implementations
  |____|__OrderRepository.cs
  |____|__CustomerRepository.cs
  |__Contracts
  |____|__IOrderRepository.cs
  |____|__ICustomerRepository.cs
  SessionManager.cs
  Model
  |__Customer.cs
  |__Order.cs

ВОПРОС: Модель должна быть отделена от репозитория в дополнительном проекте?

Если да, ПОЧЕМУ?

1 Ответ

3 голосов
/ 30 декабря 2010

Если вы стремитесь к тому, чтобы ваше приложение не зависело от хранилища, тогда да. Один из способов сделать это состоит в том, чтобы ваша модель содержала абстракции для ваших репозиториев, таких как абстрактные классы или интерфейсы. Тогда у вас будет отдельный проект, который вы можете назвать чем-то вроде слоя доступа к данным (DAL), и он будет содержать ссылку на ваш модельный проект и реализовать абстрактные репозитории.

Преимуществами этого является более четкое разделение обязанностей между вашим проектом (например, ваш модельный проект реализует бизнес-логику, а ваш проект DAL знает мрачные подробности о том, как получать данные). Кроме того, это позволит вам реализовать два разных DAL, например, один для SQLServer и один для SqlLite.

...