Я пытаюсь перенести этот запрос Oracle SQL в EF, используя Linq-To-Entities:
SELECT *
FROM myTable PARTITION(p1);
Проблема в том, как я могу перевести выбор раздела? Я почти уверен, что нет простого и легкого способа сделать это, но мне действительно нужно как-то выбрать один раздел.
Должен сказать, я ничего не пробовал, так как действительно не знаю, с чего начать.
Любая подсказка?
Хороший вопрос, но я не должен знать, из какого пункта был сделан раздел. Я просто знаю название раздела, поэтому просто не могу обойти выбор раздела.
Это отличный пример того, что вам нужно думать об архитектуре заранее. всегда есть конфликт между DBA/Coder. DBA думает о производительности БД. Кодировщик должен иметь возможность использовать имеющиеся инструменты. EF имеет ограничения и не подходит для высокопроизводительного кодирования. Если у вас есть CRUD - все в порядке. Вы всегда можете использовать DbContext.Database.ExecuteSqlCommand для необработанного sql.
Хорошо, я вижу, это то, что я думал, если честно. Ну, в любом случае спасибо.





Вместо использования нотации раздела, почему бы вам не переключиться на использование предложения where, которое соответствует столбцу, на который вы произвели разделение? Например. если у вас есть таблица, разделенная на списки, и интересующая вас секция соответствует значениям col1 = 1, тогда ваш запрос станет
select * from mytable where col1 = 1;. Предложение where может определять, какие разделы используются, а Oracle может выполнять сокращение разделов, чтобы просматривать только те разделы, которые ему нужны.