2016-08-23 36 views
1

Я создаю простое приложение winforms, я использую n-Tier Architecture, Dependecy Injection (с простым инжектором), Entity Framework Code First, Repository и Unit Of Work ,WinForms N-Tier App с DI, репозиторием и

  • UI Layer.
    • Формы.
  • Бизнес-логика.
    • Бизнес-объекты «Менеджеры» (классы, которые выставляют бизнес-процессы).
  • доступа к данным слоя
    • Хранилища.
    • Контекст базы данных.

В принципе, я знаю, что я могу зарегистрировать объекты на моем контейнере на точке входа приложения (Program.cs), но это работает только для объектов, доступных из пользовательского интерфейса, что исключает объекты доступа к данным слоя ,

Итак, как я могу регистрировать объекты из бизнес-логического уровня, так как это библиотека классов.

Заранее спасибо.

+0

"Entity Framework Code First, Repository и единица режимов работы." это глупо повторяется, сделайте ** НЕ ** старайтесь сделать это, вы будете нападать на свой код. EntityFramework ** IS ** Единицы измерения работы и хранилища –

+1

Связано: http://programmers.stackexchange.com/q/300376/201695 –

ответ

1

Вам необходимо провести различие между зависимостью и ссылкой.

Вы правы в том, что ваш пользовательский интерфейс не должен зависеть от вашего DataAccessLayer. Но это означает, что он не должен быть жестко связан с кодом SQL Server (чтобы привести пример). Это не значит, что вы не можете ссылаться на этот проект.

Чтобы решить вашу проблему, просто свяжитесь со всеми проектами вашего пользовательского интерфейса (который будет точкой входа для вашего приложения).

Дело в том, что если вы создаете такие ссылки: UI => Business Logic => Data Access, вы также ссылаетесь на слой данных из пользовательского интерфейса, только косвенно.

Я написал сообщение о том именно этим объясняется его более подробно:

https://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/

+0

Да, я знаю, что _indirectly_ Я ссылаюсь на DAL из пользовательского интерфейса. Спасибо за ответ, я посмотрю. – hyperar

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

  • Нет связанных вопросов^_^