powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Селектор сущности в Entity Framework - как?
17 сообщений из 17, страница 1 из 1
Селектор сущности в Entity Framework - как?
    #38394301
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда пишешь запрос строкой, то можно было составть эту строку динамически: select "" from ""..., где вместо кавычек можно было подставлять сущности и её параметры. В результате можно было написать один запрос-шаблон и вставлять в него нужные параметры. Как с этим обстоят дела в Entity Framework?

В данный момент я пишу так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (var db = new DatabaseEntities())
{
	switch (productTypeName)
	{
		case "Car":
			from car in db.Cars
			...
			break;

		case "Table":
			from table in db.Tables
			...
			break;
                   ...
	}
}
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394308
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выглядит хреново.

Знаю, что в Entity Framework можно тоже строку запросом послать через Database.SqlQuery, но тогда вся эта канва с ORM теряет смысл - нет готовой типизации результатов запроса, плюс контекст не отслеживает (как сказано в комментарии к этой функции) резальтаты таких запросов.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394311
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, да, забыл добавить, что действия в кейсах свича однотипные, типа записать результаты в одну и ту же коллецию и т. п.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394312
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Dynamic LINQ . Но это всё следствие неправильной структуры данных.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394315
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё рефлекшеном можно. Но лучше структуру данных поправить.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394316
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё можно обобщить доступ к таблицам через Concat/Union, и делать запросы к объединению.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394426
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Когда пишешь запрос строкой, то можно было составть эту строку динамически: select "" from ""..., где вместо кавычек можно было подставлять сущности и её параметры. В результате можно было написать один запрос-шаблон и вставлять в него нужные параметры. Как с этим обстоят дела в Entity Framework?EF направлен как раз на уход от подобной практики.

user7320Знаю, что в Entity Framework можно тоже строку запросом послать через Database.SqlQuery, но тогда вся эта канва с ORM теряет смысл - нет готовой типизации результатов запросаКак это нет? SqlQuery принимает тип как Of TElement или System.Type и пытается привести результат запроса к этому типу.

Нужно либо сделать базовый класс, умеющий выполнять однотипные действия с разными объектами, и унаследовать классы модели Cars и Tables от него, а типизировать проще пареной репы — передать Me.GetType (не знаю как это в вашем си-диезе) в SqlQuery. Второй вариант, ими же реализовать интерфейс, описывающий необходимые действия. Правда суть его сводится к тому, что реализация свича раскидывается по классам.

В блоке Using останется неизменный механизм, работающий либо с базовым классом, либо с интерфейсом.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394675
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЕсть Dynamic LINQ .Спасибо, полезная штука. Она + тынц + шаблонизатор = движок универсального кодогенератора. Профит.

Для работы с базами она по-моему противопоказана. Похерена типизация с интеллисенсом, но сохранены, а может и приумножены минусы типа производительности. Лучше уж чистое ADO.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394739
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЕсть Dynamic LINQ . Но это всё следствие неправильной структуры данных.
Хе-хе. У меня, оказывается, эта вкладка открыта в браузере уже года полтора-два, только затерялась. ))

Насчёт структуры данных. Ну а чего там можно придумать, чтобы можно было выбирать сущности и их атрибуты чисто запросом? EAV? Так его не везде применять можно и нужно. Да возьмём простой пример - две таблицы (как у меня в примере в первом посте) и только. Тут EAV не нужен, но селектор сущности и атрибутов охота.

AntonariyДля работы с базами она по-моему противопоказана. Похерена типизация с интеллисенсом
Эмм... Имена параметров и сущностей можно через рефлексию и выражения (Expression) вытащить. Но вот почему они сделали фразы в Where полностью строковыми, непонятно. Мне, например, уже достаточно, чтобы имена сущностей и их атрибутов чтобы можно было динамически задавать, а вот всякие проверки и действия уже лишнее.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394743
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyно сохранены, а может и приумножены минусы типа производительности. Лучше уж чистое ADO.
Так чистое ADO, вроде, ничего не типизирует, деревья выражений не создаёт. Поэтому и быстрее. За удобство заплатили скоростью (весь Дотнет на этом принципе построен).
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38394887
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320 Но вот почему они сделали фразы в Where полностью строковыми, непонятно.А как иначе?

user7320 Так чистое ADO, вроде, ничего не типизирует, деревья выражений не создаёт. Поэтому и быстрее. За удобство заплатили скоростью (весь Дотнет на этом принципе построен).Ты так говоришь, как будто открыл великую тайну.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38395012
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyuser7320 Так чистое ADO, вроде, ничего не типизирует, деревья выражений не создаёт. Поэтому и быстрее. За удобство заплатили скоростью (весь Дотнет на этом принципе построен).Ты так говоришь, как будто открыл великую тайну.
Тогда я не понимаю недовольных возгласов о производительности кода от людей, которые понимают, что эти вещи были придуманы не для производительности кода. Причём возгласы вида (я не вас имею ввиду, а вообще иногда встречаются) "фу гавно нирикамедную этат фремворк! ни магли сделать фсё как в крузис или в джаве".
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38395072
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Насчёт структуры данных. Ну а чего там можно придумать, чтобы можно было выбирать сущности и их атрибуты чисто запросом?Традиционно, общие поля вынести в центральную таблицу. Завязать на неё таблицы со специфичными полями отношением один-к-одному. В центральную таблицу добавить поле "тип" или определять тип по наличию записи в "специфичной" таблице.

А если у них нет общих полей - тогда постановка задачи сомнительна, или я её не понимаю.

user7320Тут EAV не нужен, но селектор сущности и атрибутов охота.Делаешь универсальный просмотрщик аля PropertyGrid? Если да, то LINQ тут только мешает.
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38395171
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320Насчёт структуры данных. Ну а чего там можно придумать, чтобы можно было выбирать сущности и их атрибуты чисто запросом?Традиционно, общие поля вынести в центральную таблицу. Завязать на неё таблицы со специфичными полями отношением один-к-одному. В центральную таблицу добавить поле "тип" или определять тип по наличию записи в "специфичной" таблице.

А если у них нет общих полей - тогда постановка задачи сомнительна, или я её не понимаю.
Приведу пример.

У меня так и есть - наследование и таблица с типами - см. вложение.

Затем, в коллеции (скажем, список-листбокс; и вообще, речь о WPF, если что) у меня намешаны книги и диски - суть, продукты. Не спрашивайте, зачем намешал, на самом деле ситуация сложнее, но допустим, что так. Кликаем на листбокс и выполняется команда, которая должна запросить данные по выбранному продукту. У команды только один параметр, и я передаю туда собственно выбранный предмет (SelectedItem). Я могу сделать и без команд, а, скажем, привязав свойство IsSelected модели представления к IsSelected листбокса. В любом случае, я получаю в код объект, который представляет собой либо книгу, либо диск (т. е. не просто продукт, а прямо потомковый тип известен).

Далее всё как в первом посте - тип продукта известен, сам экземпляр типа (или его айди) известен - могу сделать запрос. Но вот как теперь составить универсальный запрос в рамках строго типизированного ORM при такой схеме БД, чтобы и к книгам (или машинам), и к дискам (или столам) можно было обращаться в БД? Или менять схему БД?
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38395195
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38395196
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP1983 тынц

смотреть картинку после D. RepositoryBase – The Generic Entity Repository base class
...
Рейтинг: 0 / 0
Селектор сущности в Entity Framework - как?
    #38396001
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Но вот как теперь составить универсальный запрос в рамках строго типизированного ORM при такой схеме БД, чтобы и к книгам (или машинам), и к дискам (или столам) можно было обращаться в БД? Или менять схему БД?Если строго подходить к задаче, можно делать запрос только к общей части, в данном случае к таблице Product, и возвращать в данном случае только общие поля Type и Name. Это если нужно отобразить данные в табличном виде.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Селектор сущности в Entity Framework - как?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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