2013-11-13 2 views
1

Я столкнулся с проблемой устранения проблем при попытке решить репозиторий и единицу шаблона работы с помощью Entity Framework Model First. В моем решении у меня есть 4 проекта: данные, домен, репозиторий, консоль. В моем слое данных у меня есть EF, edmx-файл. В доменном слое у меня есть мои объекты, на уровне репозитория у меня есть интерфейс репо и класс UOW. На консольном уровне я пытаюсь записать имена на экране. Но чтобы писать имена на экране, мне нужно добавить EF dll в Project Console и написать строку подключения базы данных к app.config. Но это неправильно, я думаю, для разделения проблем. Консольный проект не должен знать об EF, он должен только взаимодействовать с уровнем Repo, чтобы использовать класс Unit of Work (UOW).Разделение проблем, связанных с репозиторием, структурой UoW и структурой Entity

Вот моя структура:

enter image description here

Два проекта использовать EF DLL, который

enter image description here

Мои простые ссылки консольного приложения (это, как я хочу, чтобы это было, только использование слоя репо и верхнего слоя)

enter image description here

Моя консоль код:

enter image description here

Здесь код консоли не работает, если я не добавить EF проекта и строка подключения к проекту. Что я делаю не так? Любое предложение поможет, я смотрю на некоторые GitHub проекты и не смог найти простое решение, которое не имеет строк соединения в app.config или web.config

+1

Выполняемое приложение всегда предоставляет строку подключения. Для слоя данных это инжектированная зависимость. Если в DAL была строка подключения, вы никогда не сможете использовать ее с другими базами данных. –

+0

Почему я хочу использовать его с другими базами данных? что вы имеете в виду? –

+1

Разработка, тестирование, производство, ... Как бы вы сказали DAL, какую базу данных использовать, когда ваше приложение работает в помещении у клиента? –

ответ

0

Строки зависимость соединения является не то, что я вижу, как нарушение разделения интересов. Стартовые проекты Знает окружающую среду. НО:

, если вы хотите, чтобы избежать строки подключения можно создать контексты, проходящих в связи Info

public class MyContext : DbContext 
public MyContext(DbConnection dbConnection, bool contextOwnsConnection) 
     : base(dbConnection, contextOwnsConnection) 

У меня также есть EF как пакет ссылочного поэтому он может быть загружен.

<package id="EntityFramework" version="6.0.1" targetFramework="net45" /> 

Но я только что проверил с помощью Resharper. Он может быть безопасно удален. Так что у меня нет кодовых ссылок на EF. Просто ссылка на окружающую среду/пакет.

Не нарушайте разделение кода. Парадигма развития домена, основанная на моем представлении.

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