powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Динамические выборки
9 сообщений из 9, страница 1 из 1
Динамические выборки
    #38936513
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЭстЪ набор сущностей. В худшем случае с вообще непересекающимися множествами атрибутов. Пользователь может выбирать, как в качестве критериев выборки, так и в качестве запрашиваемых любые атрибуты. Да... Это еще сортируется, ну и paging...
В общем виде это, по идее, может выглядеть ~так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
;with cte(EntityIAttrI, EntityIAttrII, EntityIIAttrI, EntityIIAttrII)
as
(
	select
		AttrI as EntityIAttrI,
		AttrII as EntityIAttrII,
		null as EntityIIAttrI,
		null as EntityIIAttrII
	from
		EntityI
	union
	select
		null as EntityIAttrI,
		null as EntityIAttrII,
		e.AttrI as EntityIIAttrI,
		d.AttrII as EntityIIAttrII
	from
		EntityII e
		join EntityIIDetail d on d.idMaster = e.id
)
select
	EntityIAttrI,
	EntityIAttrII,
	EntityIIAttrI,
	EntityIIAttrII
from
(
	select
		row_number() over (order by EntityIAttrI, EntityIIAttrII) as RowNo,
		EntityIAttrI,
		EntityIAttrII,
		EntityIIAttrI,
		EntityIIAttrII
	from
		cte
) p
where
	RowNo between start and limit


Вот как бы это все малой кровью покультурнее запихнуть в EF? И стоит ли?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Динамические выборки
    #38936525
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft,

у EF нет способности строить CTE запросы. либо оформляешь через вью и мапишь это вью как таблицу, а если этого мало, тогда только через хранимку и прямое дёргание её через контекст.
...
Рейтинг: 0 / 0
Динамические выборки
    #38936557
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> у EF нет способности строить CTE запросы
Не... То ж я для примеру, так сказать гипербола ... Там, по сути cte нужен просто тупо в качестве обертки для последующего paging'а... Его ж можно внутрь всего запихнуть (просто еще один уровень select from (select...) добавится...))

> либо оформляешь через вью и мапишь это вью как таблицу
повторяюсь и акцентирую: количество сущностей, как таковых, так и множество их атрибутов (как на входе, так и в выхлопе) пользователь меняет динамически.

> а если этого мало, тогда только через хранимку и прямое дёргание её через контекст.
а что хранимка-то (учитывая сказанное выше)? DSQL + динамический выхлоп - как его мапить (динамически)?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамические выборки
    #38936587
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Softповторяюсь и акцентирую: количество сущностей, как таковых, так и множество их атрибутов (как на входе, так и в выхлопе) пользователь меняет динамически.

EF (как в принципе и любой ORM) предназначен для отражения реляционной структуры в объектную модель целевого языка/платформы.

что ты на выходе (на выхлопе) там хочешь получить? динамически собираемый class с разным набором пропертей, не понимаю?

задача поставлена ппц как криво, ты бы хоть результат сначала представил себе с чем ты будешь работать в итоге?

Ex_Softа что хранимка-то (учитывая сказанное выше)? DSQL + динамический выхлоп - как его мапить (динамически)?

во что мапить-то? в какую дыру? EF мапит в конкретные классы, известные на этапе компиляции , а ты чего хочешь, не понимаю? в рантайме компилить динамические классы? для каких целей?

нет, такого EF не умеет, да и ни один из имеющихся ORM не умеет, и совершенно точно в самом далёком обозримом будущем, не будет.

хочешь динамику по набору полей, значит строй SQL динамически, запихивай его в DataTable и работай с ним, зная поля в рантайме по их наименованию. только при чём тут ORM?
...
Рейтинг: 0 / 0
Динамические выборки
    #38936924
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> задача поставлена ппц как криво, ты бы хоть результат сначала представил себе с чем ты будешь работать в итоге?

Легко


Хочу видеть все имущество по владельцам, приобретенное в определенный период (с некоторыми специфичными атрибутами)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
;with cte(Владелец, ДатаПриобретения, Наименование, ГосБортНомер, Площадь)
as
(
	select
		Владелец.Владелец as Владелец,
		НедвижимоеИмущество.ДатаПриобретения as ДатаПриобретения,
		НедвижимоеИмущество.Наименование as Наименование,
		null as ГосБортНомер,
		null as Площадь
	from
		Владелец
		join НедвижимоеИмущество on НедвижимоеИмущество.idВладелец = Владелец.id
	union
	select
		Владелец.Владелец as Владелец,
		НаземноеТС.ДатаПриобретения as ДатаПриобретения,
		НаземноеТС.Наименование as Наименование,
		НаземноеТС.ГосНомер as ГосБортНомер,
		null as Площадь
	from
		Владелец
		join НаземноеТС on НаземноеТС.idВладелец = Владелец.id
	union
	select
		Владелец.Владелец as Владелец,
		ВодноеТС.ДатаПриобретения as ДатаПриобретения,
		ВодноеТС.Наименование as Наименование,
		ВодноеТС.БортНомер as ГосБортНомер,
		null as Площадь
	from
		Владелец
		join ВодноеТС on ВодноеТС.idВладелец = Владелец.id
	union
	select
		Владелец.Владелец as Владелец,
		ВоздушноеТС.ДатаПриобретения as ДатаПриобретения,
		ВоздушноеТС.Наименование as Наименование,
		ВоздушноеТС.БортНомер as ГосБортНомер,
		null as Площадь
	from
		Владелец
		join ВоздушноеТС on ВоздушноеТС.idВладелец = Владелец.id
	union
	select
		Владелец.Владелец as Владелец,
		ЗемльныйКадастр.ДатаПриобретения as ДатаПриобретения,
		null as Наименование,
		null as ГосБортНомер,
		ЗемльныйКадастр.Площадь as Площадь
	from
		Владелец
		join ЗемльныйКадастр on ЗемльныйКадастр.idВладелец = Владелец.id
)
select
	Владелец,
	ДатаПриобретения,
	Наименование,
	ГосБортНомер,
	Площадь
from
(
	select
		row_number() over (order by Владелец, ДатаПриобретения) as RowNo,
		Владелец,
		ДатаПриобретения,
		Наименование,
		ГосБортНомер,
		Площадь
	from
		cte
) p
where
	RowNo between start and limit




И вот с этой выборкой я работаю. Что в ней кривого/криминального?

> хочешь динамику по набору полей, значит строй SQL динамически, запихивай его в DataTable и работай с ним, зная поля в рантайме по их наименованию. только при чём тут ORM?
Да, вот, хотелось как-то припахать "того парня"... + Мо, ЭстЪ еще какие-либо варианты реализации... Чем больше выбор - тем лучше ж...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамические выборки
    #38936942
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftИ вот с этой выборкой я работаю. Что в ней кривого/криминального?

т.е. ты хочешь мапить вот в это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public class МойКласс
{
     public string Владелец {get; set;}
     public DateTime ДатаПриобретения {get; set;}
     public string Наименование  {get; set;}
     public string ГосБортНомер  {get; set;}
     public string Площадь  {get; set;}
}



Правильно понял?
...
Рейтинг: 0 / 0
Динамические выборки
    #38937130
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttт.е. ты хочешь мапить вот в это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public class МойКласс
{
      public string Владелец {get; set;}
      public DateTime ДатаПриобретения {get; set;}
      public string Наименование  {get; set;}
      public string ГосБортНомер  {get; set;}
      public string Площадь  {get; set;}
}



Правильно понял?
Ну... Для конкретно приведенного желания пользователя - да. Но, вот, если ему захочется посмотреть только недвижимое и движимое имущество, по последний union - не нужен/выпадает и, соответственно, Площадь - тоже...

Но это только вершина айсберга... В этом порно фильме у каждого, к примеру, имущества - куча фоток в различных позах ракурсах... Вот их-то и мне нужно визуализировать в виде карточек... И все это должно работать в режиме реального времени - т.е. быстро...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамические выборки
    #38937135
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
> Ну... Для конкретно приведенного желания пользователя - да.
Т.е. пользователь может выбирать любые комбинации сущностей и их атрибутов. И пока об ограничении вариантов речь не идет. Соответственно нагенерячить классов по всем комбинациям даже не представляется возможным...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамические выборки
    #38937273
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftСоответственно нагенерячить классов по всем комбинациям даже не представляется возможным...

Собственно вот и ответ
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Динамические выборки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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