|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Подскажите возможно ли как-то выполнить SQL запрос средствами Entity Framwork c заранее неизвестной структурой? вот пример для одной колонки Код: c# 1.
а что-то типа этого, но для всех колонок? например Код: c# 1.
или может быть dynamic какой-нибудь. Или datareader. Вроде бы и EntityDataReader есть, но он не работает с raw sql ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 19:30 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Stanislav, DbDataRecord в качестве типа не прокатит? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 23:12 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУ, послушай, вот вопрос EF схавает такую фишку Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
конечно это имхо противоречит концепции, но может есть там такая французская булка? зы сам не могу проверить (( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 23:28 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУ http://codearticles.ru/articles/719 Спасибо, то что нужно! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 09:04 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
gandjustasStanislav, DbDataRecord в качестве типа не прокатит? прокатит, в примере выше как раз так и сделано. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 09:37 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Где-то в степиконечно это имхо противоречит концепции, но может есть там такая французская булка? Мысль светлая, но мельница не заводится... The result type '<>f__AnonymousType0`2[System.Int32,System.String]' may not be abstract and must include a default constructor. StanislavgandjustasStanislav, DbDataRecord в качестве типа не прокатит? прокатит, в примере выше как раз так и сделано. Спасибо! Не совсем. В примере не используется DbDataRecord (добавил к рецепту 3 вариант ). ObjectQuery<DbDataRecord> - плохой способ, SELECT * не поддерживается, требования к SQL немного иные. Нельзя скопировать туда валидный SQL и ожидать, что это заработает. Но тем не менее, это рабочий вариант. Публикую. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 10:45 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУ, Моя жестоко негодует, ну ладно у ребят нет юмора ( реализовать мой пример, это всего лишь 10-15 строчек кода - добавить в фрейм) но - and must include a default constructor наводит на мысль что ребята продолжают пользоваться шедевральным -activator.createinstance<T>, я теперь спокоен за EF, у него есть резервы для скорости и развития. зы Он мне сразу напомнил армию, все четко и по уставу ( от обеда до забора) ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 11:14 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Где-то в степи, не паникуй :) EF всё-равно остается самым внятным и толковым ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 11:40 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУ, Да это я так.. поворчал для приличия :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 11:42 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Где-то в степиМСУ, Моя жестоко негодует, ну ладно у ребят нет юмора ( реализовать мой пример, это всего лишь 10-15 строчек кода - добавить в фрейм) но - and must include a default constructor наводит на мысль что ребята продолжают пользоваться шедевральным -activator.createinstance<T>, я теперь спокоен за EF, у него есть резервы для скорости и развития. зы Он мне сразу напомнил армию, все четко и по уставу ( от обеда до забора) ))) С чего этот «гениальный» вывод? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 17:32 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУ, Речь идет о Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 17:35 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
gandjustasМСУ, Речь идет о Код: sql 1.
Глупости. Это работать не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 19:01 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУ, Проверял? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 23:26 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
gandjustasМСУ, Проверял? А ты? Коль предложил, ждем в студию рабочий код. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 23:28 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
gandjustas, где ответ или ты решил отмолчаться? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2014, 21:58 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУgandjustas, где ответ или ты решил отмолчаться? Только из Греции вернулся, там доступа к студии не было. Так НЕ работает: Код: c# 1.
Но можно написать примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 03:13 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
gandjustasТак НЕ работает: Код: c# 1.
Что и требовалось доказать, о чём я тебе и говорил. Поэтому, прежде чем что-то советовать, убедись в работоспособности предлагаемого варианта. gandjustasНо можно написать примерно так Именно так у меня и сделано в 2 рецептах, на DbDataReader. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 09:00 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
МСУ, Ты обкурился? Я вопрос задавал, а не советовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 17:07 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Где-то в степиМСУ, послушай, вот вопрос EF схавает такую фишку Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
конечно это имхо противоречит концепции, но может есть там такая французская булка? зы сам не могу проверить (( Сам по себе - не схавает, но для EF5 получилось допилить таким образом, чтобы динамический SQL можно было представить в виде типизированного IQueryable<T> с возможностью дальнейшего использования в других LINQ - запросах. Очень удобно для композиции запросов со временными таблицами. Кода до фига, опишу ключевые моменты: 1. Пишется wrapper для SQL-провайдера (примеры есть в I-Net) 2. Динамический SQL инжектится в дерево выражений через вызов табличной функции. Функция в БД не нужна, она все равно заменится на последующих этапах. В момент инжекта функции сам динамический SQL и описание типа для IQueryable передается в функцию через строковые параметры в виде Expression.Constant. 3. Во wrappere провайдера перехватывается создание DbCommandDefinition и визитором проходится DbQueryCommandTree с заменой вызова фэйковой табличной функции на запрос (DbScanExpression) к динамически созданному EntitySet с definingquery, соответствующим нашему динамическому SQL. Текст динамического запроса и описание выходного типа достается из аргументов DbFunctionExpression в виде DbConstantExpression. Здесь вовсю дергаются internal и private из EF, код сгенерирован в виде dynamic-метода. Как показало изучение кода транслятора DbExpressionTree в SQL, EF не обращает внимания на то, что новый динамический тип физически не входит в наш MetadataWorkspace (хотя и приходится создавать в нем ссылку на наш EntityContainer). 4. Также в DbQueryCommandTree вносятся некоторые изменения в проекции DbNewInstanceExpression для преобразования выхлопа фэйковой функции к динамическому EntityType, сгенерированному на шаге 3. Надеюсь, что при переходе на EF6 (Open-Source), игрищ с wrapper-ом и internal-методами можно будет избежать. Тогда можно будет попробовать оформить код более компактно, сейчас же, к сожалению, поделиться им не смогу, ибо он потянет за собой кучу кода из слоя доступа к данным. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2014, 13:55 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Gluck_13, Честно сказать, снимаю шляпу, советую загитхабить ваш код, не плохой инструмент может получиться для тактических задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2014, 16:34 |
|
Entity Framwork 6 raw sql
|
|||
---|---|---|---|
#18+
Где-то в степи, Да я бы с удовольствием статейку бы оформил. Только код тяжело из рабочего проекта выдрать. Он обвязан базовыми библиотеками, например, динамические методы генерятся через IL extensions, мэппинг функций (в т.ч. табличных) осуществляется через собственные расширения CodeFirst и т.п. Да и насколько корректно публиковать код, который что-то дергает из internal и private классов/членов EF? Вот скоро (через квартал-другой) планируем мигрировать под EF6. Открытый исходный код позволит внедриться без Wrapper-а провайдера и генерации IL. Там и объем кода станет обозримым для выдергивания его из проекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2014, 07:17 |
|
|
start [/forum/topic.php?fid=17&fpage=18&tid=1349707]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
66ms |
get topic data: |
27ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
others: | 243ms |
total: | 452ms |
0 / 0 |