Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
Ну как-то сложилось, что создаём в унаследованном от DbContext классе поля DbSet<Entity> - генерим/накатываем миграции - и готово.

Вопрос #1
Обязательно проходить через указание DbSet<Entity> ? В какой-то момент мне показалось, что достаточно, что бы явно замапленный класс ссылался на "дополнительный" и таблица в EF для дополнительного создатся сама.

Это глюк?

Вопрос #2
Смотрю в базу, CF, там полно таблиц, но через DbSet<Entity> задано вообще всего ничего (три сущности).
Что за прием такой, позволяющий такое?
27 апр 18, 12:11    [21373329]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
Я всегда думал, что динамическое добавление таблиц (не сущностей) - это не про EF вообще.
27 апр 18, 12:11    [21373331]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19101
По крайней мере EF Core автоматически создает таблицы для всех связанных сущностей. Поэтому, если нет "StandAlone" таблиц, достаточно создать только один DbSet<Entity>, остальные подтягиваются по цепочке.
27 апр 18, 12:13    [21373342]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19101
Чем отличается первый вопрос от второго? )))
27 апр 18, 12:14    [21373349]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34608
Агнец за бортом
явно замапленный класс ссылался на "дополнительный" и
что за термин дополнительный?
Есть классы и отношения между ними.
27 апр 18, 12:25    [21373402]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
hVostt
Member

Откуда:
Сообщений: 14741
Агнец за бортом
Вопрос #1
Обязательно проходить через указание DbSet<Entity> ? В какой-то момент мне показалось, что достаточно, что бы явно замапленный класс ссылался на "дополнительный" и таблица в EF для дополнительного создатся сама.


Нет, не просто не обязательно, нафиг не нужно. Используй профили.


Агнец за бортом
Вопрос #2
Смотрю в базу, CF, там полно таблиц, но через DbSet<Entity> задано вообще всего ничего (три сущности).
Что за прием такой, позволяющий такое?


Профили, либо динамическая регистрация.
27 апр 18, 12:40    [21373457]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
hVostt
Member

Откуда:
Сообщений: 14741
Агнец за бортом
Я всегда думал, что динамическое добавление таблиц (не сущностей) - это не про EF вообще.


Непонятно, что за динамическое добавление таблиц? EF работает с конкретной моделью, которая билдится на старте. Если модель меняется, никто не мешает перебилдить контекст. Но это лишнее, так как EF для динамики в рантайме плохо заточен, точнее никак.
27 апр 18, 12:41    [21373466]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
Shocker.Pro
Чем отличается первый вопрос от второго? )))


Там явно не от корневой сущности всё тянется.
27 апр 18, 12:54    [21373586]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
Shocker.Pro
По крайней мере EF Core


Я про "простой". 6.0.0.0
27 апр 18, 12:54    [21373593]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
hVostt
Профили, либо динамическая регистрация.


Про профили я поищу, а как выглядит "динамическая" регистрация? Это что - можно без миграций?

Как в монге? o_O
27 апр 18, 12:56    [21373603]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19101
Агнец за бортом
Там явно не от корневой сущности всё тянется.
так пофиг, все равно пройдет по всему графу
27 апр 18, 13:02    [21373636]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
hVostt
Member

Откуда:
Сообщений: 14741
Агнец за бортом
Про профили я поищу, а как выглядит "динамическая" регистрация? Это что - можно без миграций?

Как в монге? o_O


Не.. динамическая регистрация, это значит при запуске поковыряться в ассембли, поискать классы профилей и зарегистрировать их. При подключении новых ассембли, они будут добавляться в контекст со своими таблицами. Это не рантайм динамика :)
27 апр 18, 13:05    [21373668]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34608
hVostt
Агнец за бортом
Про профили я поищу, а как выглядит "динамическая" регистрация? Это что - можно без миграций?

Как в монге? o_O


Не.. динамическая регистрация, это значит при запуске поковыряться в ассембли, поискать классы профилей и зарегистрировать их. При подключении новых ассембли, они будут добавляться в контекст со своими таблицами. Это не рантайм динамика :)
т.е. это типа добавили Плагн_Б и кусок БД зарегили допонительно.
IMHO нафиг не надо.
27 апр 18, 13:21    [21373751]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
hVostt
Member

Откуда:
Сообщений: 14741
Petro123
т.е. это типа добавили Плагн_Б и кусок БД зарегили допонительно.
IMHO нафиг не надо.


у нас на проектах где EF пользуется всё из сборок регается. ну дженерики, репо на дженериках, лабараторная классика.
27 апр 18, 13:38    [21373866]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34608
hVostt,
У вас нестандарт. У вас CQRS)).
27 апр 18, 13:43    [21373898]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
hVostt
поискать классы профилей и зарегистрировать их.


Не понимаю, "профили EF" - предлагают посмотреть на запросы EF.

О каких профилях ты говоришь?

И что значит - зарегестрировать? В какой момент создаются таблицы? Что с миграциями происходит?

Это всё при запуске?
27 апр 18, 14:32    [21374182]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
hVostt
Member

Откуда:
Сообщений: 14741
Агнец за бортом
О каких профилях ты говоришь?

И что значит - зарегестрировать? В какой момент создаются таблицы? Что с миграциями происходит?

Это всё при запуске?


http://anthonygiretti.com/2018/01/11/entity-framework-core-2-entity-type-configuration/

для каждой ентити, например, Product создаёшь класс IEntityTypeConfiguration<Product> (можно вложенным классом прям в Product), затем находишь все классы наследники IEntityTypeConfiguration<> и регистрируешь их в OnModelCreating. таким образом ты отделяешь мух от котлет и DbContext у тебя чистенький.
27 апр 18, 15:48    [21374516]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
hVostt
таким образом ты отделяешь мух от котлет и DbContext у тебя чистенький.


Нефига се - отделяешь. Уже POCO - недостаточное отделение?

И как по мне - наследоваться от "не-пойми-чего" - это уже никакое не отделение.

База меняется при каждом перезупуске?

За ссылку - спасибо.
27 апр 18, 16:01    [21374570]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
Так эта фича только на второй корке?
27 апр 18, 16:02    [21374573]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
hVostt,

Раньше указывали в одном месте - теперь в другом. В чем профит?
27 апр 18, 16:08    [21374597]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19101
Агнец за бортом
Раньше указывали в одном месте - теперь в другом. В чем профит?
связность меньше, как я понимаю
27 апр 18, 16:18    [21374638]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19101
Вообще, с тем же успехом можно просто реализовать у класса сущности какой-нить пустой интерфейс
27 апр 18, 16:19    [21374639]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 915
Shocker.Pro
Вообще, с тем же успехом можно просто реализовать у класса сущности какой-нить пустой интерфейс


Чтобы потом в рантайме обработать его по этому признаку?
27 апр 18, 16:35    [21374694]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19101
ну да, по аналогии
hVostt
затем находишь все классы наследники IEntityTypeConfiguration<> и регистрируешь их в OnModelCreating
Это если не нужны какие-то дополнительные настройки
27 апр 18, 16:37    [21374699]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблиц EF CF - что необходимо?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34608
Агнец за бортом
hVostt,

Раньше указывали в одном месте - теперь в другом. В чем профит?

В чем разница buttons в xaml или в коде:
b = Buttons.Create();
b.Left = 0;
b.Top = 0;
)))
Вот у них второй вариант.
27 апр 18, 16:40    [21374708]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить