Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / c# ef добавить EntityTypeConfiguration в созданный DbContext / 8 сообщений из 8, страница 1 из 1
30.08.2017, 13:17
    #39512774
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
Здравствуйте!

У меня есть программа платформа с DbContext. В данную платформу загружаются дополнительные модули(сборки), которые работают с DbContext платформы. Каждый модуль содержит свой набор EntityTypeConfiguration<TEntity>.

Вопрос: как добавить в конфигуратор DbContext платформы, новые наборы EntityTypeConfiguration<TEntity> из модулей(сборок)?
При том, что загрузка модуля в платформу может быть не сразу.

Моя попытка которая не увенчалась успехом
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
namespace Main
{
    public class WorkDb : DbContext
    {
         private DbModelBuilder _modelBuilder;
         public Entities() : base("connectionString")
         {
         }
         public SetEntityMap<TEntityMap, TEntity>() : where TEntity : class
                                                                            where TEntityMap : EntityTypeConfiguration<TEntity >, new()
         {
              modelBuilder.Configurations.Add(new TEntityMap());
         }
         protected override void OnModelCreating(DbModelBuilder modelBuilder)
         {            
               _modelBuilder = modelBuilder;
               _modelBuilder .Configurations.Add(new HomeMap()); 
               base.OnModelCreating( _modelBuilder );
         }
    }
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
namespace Other
{
    public class LoadOtherEntities()
    {         
         WorkDb.SetEntityMap<BookMap, Book>();
    }
    
    //... Описание классов Book и BookMap
}
...
Рейтинг: 0 / 0
30.08.2017, 15:28
    #39512894
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
Nechto,

С динамическими библиотеками это не будет работать. И в общем случае это плохая идея. EF вообще не подходит для архитектуры подключаемых в рантайме модулей, он для этого не приспособлен, по многим причинам.

Тебе придётся либо подключать всё сразу и регистрировать конфигурации при старте. Либо выбрать другой ORM, например, Dapper, которому вообще пофигу, регистрировать ничего не надо.
...
Рейтинг: 0 / 0
30.08.2017, 15:49
    #39512908
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
hVosttNechto,

С динамическими библиотеками это не будет работать. И в общем случае это плохая идея. EF вообще не подходит для архитектуры подключаемых в рантайме модулей, он для этого не приспособлен, по многим причинам.

Тебе придётся либо подключать всё сразу и регистрировать конфигурации при старте. Либо выбрать другой ORM, например, Dapper, которому вообще пофигу, регистрировать ничего не надо.

Выходит что EF из черпал мои потребности, не думал что это так быстро произойдет. Очень жаль, что он не может работать в рантайме :(.

Кроме Dapper, какие ещё можете посоветовать frameworks? Желательно с функционалом не уступающим EF.
А то так не хочется возвращаться на select * from table.
...
Рейтинг: 0 / 0
30.08.2017, 21:18
    #39513032
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
NechtoВыходит что EF из черпал мои потребности, не думал что это так быстро произойдет. Очень жаль, что он не может работать в рантайме :(.
Не EF исчерпал, а Моделирование не делается в рантайме.
Сущности должны быть постоянны в модели и изготовлены на этапе Моделирования-разработки ИС.
Если так нравится динамика, переходи на функциональный и динамический ЯП.
...
Рейтинг: 0 / 0
30.08.2017, 23:19
    #39513066
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
NechtoЖелательно с функционалом не уступающим EF.

Функционал не уступающий EF сам по себе требует однократной полной инициализации, так для управления всеми связями требует полных знаний о модели, иначе это не будет просто работать. Ты можешь подключать модуль со своим собственным контекстом, пожалуйста, кто мешает? При чём собственный контекст может расширять существующий. То, что ты хочешь, не согласуется с банальной логикой работы ORM.


NechtoА то так не хочется возвращаться на select * from table.

Не понятно вообще что ты хочешь. Если у тебя нет полных знаний о модели, так как ты подключаешь эти знания динамически, соответственно работаешь точно также — динамически, select, все дела. Это тож самое как захотеть править исходники C#, и логика программы должна на лету меняться. Если ты так хочешь бро, гоу на интерпретируемые языки.

Ну или рассказывай подробнее, чего ты хочешь добиться конкретно, для чего тебе это.
...
Рейтинг: 0 / 0
01.09.2017, 00:22
    #39513748
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
hVosttNechtoЖелательно с функционалом не уступающим EF.

Функционал не уступающий EF сам по себе требует однократной полной инициализации, так для управления всеми связями требует полных знаний о модели, иначе это не будет просто работать.то есть dapper не поддерживает каких-то функций EF?
...
Рейтинг: 0 / 0
01.09.2017, 07:21
    #39513785
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
Antonariydapper
На заборе пищут, что это микро ОРМ.
...
Рейтинг: 0 / 0
01.09.2017, 09:39
    #39513841
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# ef добавить EntityTypeConfiguration в созданный DbContext
Antonariyто есть dapper не поддерживает каких-то функций EF?

Dapper умеет отражать результаты запросов в коллекции объектов. Ну ещё умеет подставлять параметры в запросы. Есть некоторое количество расширений, добавляющих разные возможности, например, LINQ — но это конечно даже рядом не стоит с поддержкой LINQ в EF. Зато очень быстро и максимально гибко, не нужен никакой контекст, никаких знаний о модели.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / c# ef добавить EntityTypeConfiguration в созданный DbContext / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]