powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / entity framework запрос
25 сообщений из 26, страница 1 из 2
entity framework запрос
    #39676602
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужен совет

есть две таблицы
мастер-деталь 1-м
Нужен запрос (с пейджингом)
все строки мастера, где есть дочерние строки в детали по определенному условию

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Master(masterid int, masterName varchar(100))
Detail(DetailId int, masterId int, DetailValue int)

условный запрос в mssql

select top 100 *
 from(
   select top 10000 * from master m
    where m.masterid in
       (select masterid from detail where value in (:p_1, :p_2, :p_3)
   order by 1
   )
 order by 1 desc



Модератор: Тема перенесена из форума "ASP.NET".
...
Рейтинг: 0 / 0
entity framework запрос
    #39676603
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как это будет выглядеть в Entity ASP net core 2
...
Рейтинг: 0 / 0
entity framework запрос
    #39676605
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Master
 {
 public int masterid  { get; set; }
 public string masterName { get; set; }
 }

public class Detail
 {
 public int DetailId  { get; set; }
 public int masterid  { get; set; }
 public int DetailValue { get; set; }
 }
...
Рейтинг: 0 / 0
entity framework запрос
    #39676628
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxEntity ASP net core 2Ты уж у себя в голове постарайся отделить ASP.NET от EntityFramework, а то так и будешь в трех соснах блуждать. Это несвязанные между собой вещи
...
Рейтинг: 0 / 0
entity framework запрос
    #39676630
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxвсе строки мастера, где есть дочерние строки в детали по определенному условиючем тебя не устраивает совершенно обычный join? зачем городишь трехуровневый запрос?
...
Рейтинг: 0 / 0
entity framework запрос
    #39676686
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proandreymxвсе строки мастера, где есть дочерние строки в детали по определенному условиючем тебя не устраивает совершенно обычный join? зачем городишь трехуровневый запрос?1-м + paging + left join
...
Рейтинг: 0 / 0
entity framework запрос
    #39676753
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxShocker.Proпропущено...
чем тебя не устраивает совершенно обычный join? зачем городишь трехуровневый запрос?1-м + paging + left join+ distinct для 1-m
...
Рейтинг: 0 / 0
entity framework запрос
    #39676784
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно отбирать только строки из мастера, то distinct и пейджинг можно делать на верхнем уровне
...
Рейтинг: 0 / 0
entity framework запрос
    #39676790
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxandreymxпропущено...
1-м + paging + left join+ distinct для 1-m
Имхо не нужен. ОРМ вроде left по умолчанию.
...
Рейтинг: 0 / 0
entity framework запрос
    #39676803
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕсли нужно отбирать только строки из мастера, то distinct и пейджинг можно делать на верхнем уровнене хочется тянуть на клиента 400 тыш строк, чтобы из них дистинктом получить триста тыщ и отбирать первые пятьдесят строк
...
Рейтинг: 0 / 0
entity framework запрос
    #39676809
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не говорил про тянуть на клиента. Я пока задачу не понимаю, что там за два топа и почему его нельзя выбрать в виде плоского запроса и сгруппировать
...
Рейтинг: 0 / 0
entity framework запрос
    #39676817
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,
Дай запрос с join сюда вместо подзапроса.
...
Рейтинг: 0 / 0
entity framework запрос
    #39677803
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тестовая БД на коленке
Код: 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.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
use test;

drop  table acc_operations;
drop  table acc_operation_code;
drop  table operation;
drop  table main;
go

create table dbo.main
(
main_id int,
name varchar(500),
department_id	int not null,
constraint pk_main primary key(main_id)
);

create table dbo.operation
(
operation_id int identity(1,1),
main_id int not null,
acc_operation_code int not null,
operation_date datetime not null,
name varchar(500),
constraint pk_operation primary key(operation_id),
constraint fk_operation foreign key(main_id) references main
);

create table dbo.acc_operation_code
(
acc_operation_code int not null,
acc_operation_name varchar(500) not null,
constraint pk_acc_operation_code primary key(acc_operation_code)
);

create table dbo.acc_operations
(
acc_operation_id int,
acc_operation_code int not null,
acc_operation_feature int not null,
acc_operation_actuality_from datetime not null,
acc_operation_actuality_to   datetime not null,
name varchar(500),
constraint pk_acc_operation primary key(acc_operation_id),
constraint fk_acc_operation foreign key(acc_operation_code) references acc_operation_code
);


insert into dbo.acc_operation_code
(
acc_operation_code,
acc_operation_name
)
select 1, 'operation code 1' union all
select 2, 'operation code 2' union all
select 3, 'operation code 3' 


insert into dbo.acc_operations
(
acc_operation_id ,
acc_operation_code,
acc_operation_feature ,
acc_operation_actuality_from ,
acc_operation_actuality_to
)
select 1, 1, 1, {ts '2017-01-01 00:00:00'}, {ts '2017-12-31 23:59:59'} union all
select 2, 1, 0, {ts '2018-01-01 00:00:00'}, {ts '2018-12-31 23:59:59'} union all
select 3, 2, 1, {ts '2017-01-01 00:00:00'}, {ts '2017-12-31 23:59:59'} union all
select 4, 2, 0, {ts '2018-01-01 00:00:00'}, {ts '2018-12-31 23:59:59'} union all
select 5, 3, 0, {ts '2017-01-01 00:00:00'}, {ts '2018-12-31 23:59:59'}




;with main1(id) as
(
select 1 id
union all
select id+1 from  main1 where id < 32767
)
insert into main(main_id, name, department_id)
select id, cast(id as varchar(100))+'-'+cast(id as varchar(100))+'-'+cast(id as varchar(100))+'-'+cast(id as varchar(100))+'-'+cast(id as varchar(100))+'-'+cast(id as varchar(100)),
       id / 1000
  from main1
option (maxrecursion 32767)

insert into main(main_id, name, department_id)
select main_id+32768, name+'-32768', department_id from main;

insert into main(main_id, name, department_id)
select main_id+65536, name+'-65536', department_id from main;


---select * from main;

insert into dbo.operation
(
main_id,
acc_operation_code,
operation_date,
name)

select --top 100
       main.main_id,
	   acc_operation_code,
	   dateadd(hour, main.main_id/6, {ts '2017-01-01 00:00:00'}),
	   cast(main.main_id as varchar(100))+ '='+cast(acc_operation_code as varchar(100))
 from main join (select 1 main_id, 1 acc_operation_code  union select 2 id, 2 union select 3 id, 3) o on 1=1

 go


запрос через подзапрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @department_id int = 11;
declare @acc_operation_feature int = 1;

select *
from(
select dbo.main.*,
       row_number() over(order by name) rn
  from dbo.main
where main_id in(
  select main_id
   from dbo.operation op --on op.main_id = main.main_id
  left join acc_operation_code code on code.acc_operation_code = op.acc_operation_code
  left join acc_operations ops on ops.acc_operation_code = op.acc_operation_code
                           and op.operation_date between acc_operation_actuality_from and acc_operation_actuality_to
 where (@department_id is null or main.department_id = @department_id)
   and (@acc_operation_feature is null or ops.acc_operation_feature = @acc_operation_feature)
 )
) subq 
 where rn >= 1000
   and rn < 1500



запрос с джойнами
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare @department_id int = 11;
declare @acc_operation_feature int = 1;

select subq.*
from(
select subq.*, row_number() over(order by name) rn
from(
select distinct
       dbo.main.*
  from dbo.main
  left join dbo.operation op on op.main_id = main.main_id
  left join acc_operation_code code on code.acc_operation_code = op.acc_operation_code
  left join acc_operations ops on ops.acc_operation_code = op.acc_operation_code
                           and op.operation_date between acc_operation_actuality_from and acc_operation_actuality_to

 where (@department_id is null or main.department_id = @department_id)
   and (@acc_operation_feature is null or ops.acc_operation_feature = @acc_operation_feature)
) subq
) subq
where rn >= 1000
   and rn < 1500

...
Рейтинг: 0 / 0
entity framework запрос
    #39677884
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модель построю завтра, нет компа под рукой
...
Рейтинг: 0 / 0
entity framework запрос
    #39677902
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxМодель построю завтра, нет компа под рукой
Не надо модель.
Второй запрос у тебя тоже с подзапросом.
Ты или делай простой пример один ко многим или делай запросы на sql минуя 95 процентов EF.
Т.е. получение объектов и сохранение их.
...
Рейтинг: 0 / 0
entity framework запрос
    #39677903
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreymxМодель построю завтра, нет компа под рукой
Не надо модель.
Второй запрос у тебя тоже с подзапросом.
Ты или делай простой пример один ко многим или делай запросы на sql минуя 95 процентов EF.
Т.е. получение объектов и сохранение их.во втором примере подзапрос чисто для пейджинга
Как делать пейджинг без подзапросов, я не знаю

Зы: как лучше делать sql запросы мимо EF? Что лучше использовать?
...
Рейтинг: 0 / 0
entity framework запрос
    #39677910
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxво втором примере подзапрос чисто для пейджинга
Если Модель и запрос простые, то показывай. Сделаем.
Если сложные, то как вариант через хранимку. Входной парам номер страницы.
Зачем тебе пагинация?
...
Рейтинг: 0 / 0
entity framework запрос
    #39677917
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пагинацию затребовал дизайнер

А хрпнимку как вызывать?
...
Рейтинг: 0 / 0
entity framework запрос
    #39677938
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxПагинацию затребовал дизайнеругу.
Который с фотошопом.
andreymxА хрпнимку как вызывать?
Ты не торопись. Комп будет под рукой и начинай писать).
...
Рейтинг: 0 / 0
entity framework запрос
    #39677958
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось бы всё-таки услышать
Совет бывалых и опытных
Что использовать в дополнение к EF для выполнения запросов и процедур
...
Рейтинг: 0 / 0
entity framework запрос
    #39677966
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,
Советов не будет.
Будет работа.
Садитесь за комп и будете делать что скажу я или другой мембер.
Ну, или ничего не делаете. Неделя уже прошла.
...
Рейтинг: 0 / 0
entity framework запрос
    #39677973
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

говори, прочитаю, обдумаю до завтра
...
Рейтинг: 0 / 0
entity framework запрос
    #39677975
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,
Там все просто:
var list =Контекст.MyTable.ToList();
На этой строке F9.
Запуск.
Потом F10 и справа скажешь время сереньким.
...
Рейтинг: 0 / 0
entity framework запрос
    #39677983
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или плюнуть и взять даппер
...
Рейтинг: 0 / 0
entity framework запрос
    #39678025
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxили плюнутькак работать понадобилось, так сразу философский вопрос - плюнуть или нет)))) LOL
....
"Жениться или не жениться, вот в чем вопрос!
А если жениться, то куда девать нынешнюю жену?" (С)
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / entity framework запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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