lexxpavlov
@lexxpavlov
Программист, преподаватель

Можно ли использовать EntityFramework только в Class Library?

Хочу спрятать работу с EntityFramework в библиотеку классов, чтобы из основного проекта его не было видно (инкапсулировать его). Сейчас для работы с EF приходится в референсы основного проекта добавлять и EntityFramework, и EntityFramework.SqlServer, а также в App.config указывать его настройки.
В данный момент интересен EF6, но и EF7 тоже интересно.

P.S. Желательно сделать так, чтобы в студии в WPF-проекте в режиме дизайна были видны данные базы данных.
  • Вопрос задан
  • 585 просмотров
Пригласить эксперта
Ответы на вопрос 2
Не можна, а нужно! В этом заключается трех уровневая архитертура.
Т.е. у нас есть некий фронтенд, бизнес логика и некий репозиторий, который работает с базой(и не только). Наружу сторчий только его интерфейс и мы понятия не имеем что там: Entity Framework, ADO.Net или т.п.
Ответ написан
lexxpavlov
@lexxpavlov Автор вопроса
Программист, преподаватель
Решение описано в статье. Настройки БД хранятся в коде, в файле App.config библиотеки настроек EF писать ничего не нужно.

using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.SqlServer;
using Models;

namespace DatabaseLibrary
{
    public class MyConfiguration : DbConfiguration
    {
        public MyConfiguration()
        {
            SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());
            SetDefaultConnectionFactory(new LocalDbConnectionFactory("v11.0"));
        }
    }

    [DbConfigurationType(typeof(MyConfiguration))]
    public class Database : DbContext
    {
        private const string ConnectionString = @"мой connection string";

        public Database() : base(ConnectionString)
        {            
        }

        // мои DbSet-ы
    }
}

Остаётся решить, как в WPF-проекте использовать данные в Design-режиме.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы