|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Везде видел примеры, где либо с запросом записи, типа db.MyTable.First(...), либо уже загруженную ранее запись (надо думать, с помощью другого контекста или созданием экземпляра этой записи без контекста вообще) аттачили к контексту. А можно, как с обычным запросом SQL - update в такой-то таблице по такому-то фильтру такие-то столбцы? Конкретно, проблема такая. Есть таблица, где одно из полей - картинка типа varbinary(max), а остальные - лёгкие поля, типа текста и чисел. Мне надо обновить только текст или числа - для этого обязательно надо грузить всю запись с полем varbinary(max)? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 16:44 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
А, да. Желательно, обновления такие, без загрузки, делать через какой-нибудь foreach - вобщем, в цикле. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 16:45 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
user7320А можно, как с обычным запросом SQL - update в такой-то таблице по такому-то фильтру такие-то столбцы?Через SqlQuery("update ..."). user7320Мне надо обновить только текст или числа - для этого обязательно надо грузить всю записьА как же? Это объектное представление записи, объект с потолка что ли значения возьмет? user7320с полем varbinary(max)?Разве EF поддерживает тип varbinary? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 17:17 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Antonariyuser7320А можно, как с обычным запросом SQL - update в такой-то таблице по такому-то фильтру такие-то столбцы?Через SqlQuery("update ..."). Не, мне надо понтово - фреймворково. Antonariyuser7320с полем varbinary(max)?Разве EF поддерживает тип varbinary? А нафиг он был бы нужен, если бы не поддерживал? varbinary(max) у меня отображается в byte[] (DB First). Antonariyuser7320Мне надо обновить только текст или числа - для этого обязательно надо грузить всю записьА как же? Это объектное представление записи, объект с потолка что ли значения возьмет? Мне всё равно, как он и откуда что возьмёт, но я не хочу грузить изображение с его описанием, чтобы поменять только описание. Это с EF сделать можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 18:56 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
авторНе, мне надо понтово - фреймворково. Я имею ввиду, зачем использовать EF, если писать запрос руками? Ну неужели надо сначала в контекст данные ЦЕЛИКОМ загрузить, чтобы просто обновить их в БД? Может, можно какую-нибудь облегченную модель, типа один айдишник, которой поменял описание только, а все остальные поля отсутствуют. Потом эту модель отправил в БД, но при этом все остальные поля в этой записи в БД не похерились. Или для вот таких случаев - просто обновить записи в БД без запроса - как раз и придуман SqlQuery(...)? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 19:00 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
user7320, попробуй вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
http://stackoverflow.com/a/15339512 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 19:14 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
bazileuser7320, попробуй вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
http://stackoverflow.com/a/15339512 Да-да, я такое встречал. Я вот и спрашиваю, а не сотрёт ли это картинку из записи, если обновить ей только поле мыла, причём записью, в которой поле картинки - null? Потестить смогу только завтра. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 20:07 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Штука в том, что по вашей ссылке везде используется updatedUser, который уже как-то когда-то был достан из БД - т. е. это полноценный юзер, без обрезанных (занулённых) полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 20:09 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
user7320bazileuser7320, попробуй вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
http://stackoverflow.com/a/15339512 Да-да, я такое встречал. Я вот и спрашиваю, а не сотрёт ли это картинку из записи, если обновить ей только поле мыла, причём записью, в которой поле картинки - null? Потестить смогу только завтра. Мне тут сказали, что не сотрёт. Завтра попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 20:29 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 22:15 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
user7320Мне всё равно, как он и откуда что возьмёт, но я не хочу грузить изображение с его описанием, чтобы поменять только описание. Это с EF сделать можно?Сделай представление, в котором нет этого поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 22:19 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Antonariyuser7320Сделай представление, в котором нет этого поля. Выпей яду. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 22:30 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Antonariy, Давай абстрагируемся от автора топика, впрочем ему это и не понять.. Вот у нас таблица member, там мы все спихивали в кучу, и пол и адрес, и сексуальную ориентацию, и описание, и в конце блоб с его фоткой, можно? - конечно можно, многие денормализованные идиоты так и делают, но ничто те вечно , когда то и заказчик проспится ( дурак никогда) и потребует что бы было фото в фас в профиль или еще как, добавлять поля ((? как легче? вынести все тяжелые поля в отдельную таблицу и связать их форином через id member... и все.. теперь, если мы будем делать проекцию в орм таблицы member, у на появится в member одно поле Image Foto{get;set;} связанной сущности с ленивой загрузкой - все просто.. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 22:55 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Antonariyuser7320Мне всё равно, как он и откуда что возьмёт, но я не хочу грузить изображение с его описанием, чтобы поменять только описание. Это с EF сделать можно?Сделай представление, в котором нет этого поля. У меня здесь нет представлений. Я делаю консольную утилитку для обновления БД и всяких тестов. Где-то в степиAntonariy, Давай абстрагируемся от автора топика, впрочем ему это и не понять.. Вот у нас таблица member, там мы все спихивали в кучу, и пол и адрес, и сексуальную ориентацию, и описание, и в конце блоб с его фоткой, можно? - конечно можно, многие денормализованные идиоты так и делают, но ничто те вечно , когда то и заказчик проспится ( дурак никогда) и потребует что бы было фото в фас в профиль или еще как, добавлять поля ((? как легче? вынести все тяжелые поля в отдельную таблицу и связать их форином через id member... и все.. теперь, если мы будем делать проекцию в орм таблицы member, у на появится в member одно поле Image Foto{get;set;} связанной сущности с ленивой загрузкой - все просто.. Заказчик же может не только это попросить, но ещё и три пола добавить, пять ориентаций, цвет волос и перечислитель всех родственников до 7 колена (но только в засисимости от пола, которых три). Поэтому все, кто делают БД без EAV - ретарды. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 06:32 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Где-то в степикак легче? вынести все тяжелые поля в отдельную таблицу и связать их форином через id member... и все.. Вообще не вижу плюсов от подобной декомпозиции. Если бизнес-правилами определено 3 картинки у эмплоя, не вижу проблем добавить 3 поля в ту же таблицу. Единственный плюс в разнесении блобов (в отдельную базу) - оптимизация резервного копирования основной БД и ее восстановления. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 09:47 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Где-то в степитеперь, если мы будем делать проекцию в орм таблицы member, у на появится в member одно поле Image Foto{get;set;} связанной сущности с ленивой загрузкой - все просто..Я еще не избавился от стереотипов датасетного программирования и не знаю всех бест-практикс EF :) Конечно, по сравнению с этим вариант с вьюшкой заслуживает яду. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 10:06 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Antonariy, точно так же делается и с датасет, и грузится по требованию. Хотя с датасет еще проще, можно и не разбивать таблицу, но не загрузить большие данные сразу. Все эти ЕФ - фигня для детей. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 12:08 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
А я вообще отказался от ссылочных типов данных, и оперирую одними ключами. Плюс каждый объект обвешан свойствами, который достанет нужный объект по ключу. Ибо ситуация, при которой ты: 1. Достаешь объект из контекста. 2. Выходишь из зоны использования контекста. 3. Пытаешься записать контекст обратно (а для этого надо в новый контекст вытащить все объекты, с которыми записываемый объект связан) - меня вымораживает. А так - все ключи "ношу с собой", люди в курсе. Без проблем читаю, достаю, записываю. А image держал бы в другой таблице и доставал по ключу. И всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 12:20 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
ViPRosВсе эти ЕФ - фигня для детей. и что прости по вашему для взрослых? ТС юзайте на здоровье https://www.nuget.org/packages/EntityFramework.Extended но за целостность сами будете нести ответственность п.с. если кто то не умеет готовить еф эт его проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 12:59 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
handmadeFromRu, готовит готовое как то не звучит, типа микроволновка нужна что ль? В Випрос поля помечаются, типа загрузить по требованию, показать муляж, сделать невидимым и т.д. и ниче готовить не надо, проще микроволновки ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 13:02 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
ViPRos, готовить означает уметь пользоваться, давай ребенку базуку он из не выстрелит ..вопрос куда и в кого попадет. о госпади какой то велик использовать в продакшене ..нет уж спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 13:07 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
ViPRosAntonariy, точно так же делается и с датасет, и грузится по требованию. Хотя с датасет еще проще, можно и не разбивать таблицу, но не загрузить большие данные сразу. Все эти ЕФ - фигня для детей. Сахават, хорош бредятину писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 13:11 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
[quot МСУ]ViPRosAntonariy, точно так же делается и с датасет, и грузится по требованию. Хотя с датасет еще проще, можно и не разбивать таблицу, но не загрузить большие данные сразу. Все эти ЕФ - фигня для детей. Сахават, хорош бредятину писать.[/quot да токо и слышу это низзя и это низзя, но велик хорош:) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 13:32 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
handmadeFromRuViPRos, готовить означает уметь пользоваться, давай ребенку базуку он из не выстрелит ..вопрос куда и в кого попадет. о госпади какой то велик использовать в продакшене ..нет уж спасибо какой еще у тя продакшн? книга телефонная что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 13:32 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
ViPRos, а не надо дерзить "вася". свой непонятный велик впаривать супер не профессионально ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 13:38 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
handmadeFromRuViPRos, а не надо дерзить "вася". свой непонятный велик впаривать супер не профессионально да ниче я не впариваю, а то что непонятно тебе - эт я понимаю. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 13:39 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
ViPRosда токо и слышу это низзя и это низзя, но велик хорош:) Можно, но осторожно :) Об датасеты можно споткнуться и лоб расшибить... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 14:20 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
МСУ, эт точно, тут надо понимать что делаешь, а там дядя за тебя немного подумал, а остальное забыл додумать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 14:55 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
МСУ http://codearticles.ru/articles/421 автор// Update var obj = new Article { ArticleId = 1 }; context.Articles.Attach(obj); obj.Title = "123"; context.SaveChanges(); Причём, как я понимаю, нет разницы, когда делать аттач - до изменения объекта или после? Я вот сделал после и тоже сработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 16:15 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
user7320Причём, как я понимаю, нет разницы, когда делать аттач - до изменения объекта или после? Я вот сделал после и тоже сработало. Подробно про присоединение: Присоединение и отсоединение объектов (платформа Entity Framework) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 16:31 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Теперь не могли бы вы в свете этого посмотреть мой код под конкретную задачу? У меня всё работает, но уж слишком длинно и многословно по коду получается. Может, можно короче? Есть две БД (старая и новая), в которых одинаковые по схеме таблицы. Есть два ORM, созданных EF. Надо перенести записи из старой БД в новую. Часть записей уже перенесена, но без поля Description. Мне надо обновить у перенесённых записей в новой БД Description'ы из записей в старой БД (о переносе всех остальных записей из старой БД речи пока не идёт). Как это сделать? Надо учесть, что у ещё у таблиц есть тяжёлое поле с картинкой, которую трогать не надо. И я хочу, как раньше говорил, добавить Description'ы без вытаскивания картинки. Вот схематично: таблица в старой БД idnamedescriptionimage1aaa<binary data>2bbb<binary data>3ccc<binary data> таблица в новой БД idnamedescriptionimage1a<binary data>2b<binary data> Надо добавить description'ы aa и bb в записи в новой БД, считав их из старой. Не недостающую в новой БД запись 3 пока забить. Вот мой подход. 1. Создаю два контекста (для старой и новой БД) и считываю в облегчённом формате МИНИМАЛЬНЫЕ необходимые данные (айдишники нужны для связи с записями в конкретной БД, а имена - для связи одинаковых записей между разными БД): (почему-то перестали работать выпадающие списки при редактировании, причём что на Опере, что в ФФ - поэтому делаю просто фиксированной ширины) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
2. В старых биогруппах есть нужный мне Description, которые надо перенести в новые. Поэтому фильтрую старые так, чтобы в них оказались только те биогруппы, которые уже есть в таблице в новой БД. Посколько айдишники в разных БД разные, фильтровать остаётся разве что по именам, благо что имена у меня уникальные (на это есть констрэйнт): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
3. Теперь из облегчённых отфильтрованных объектов создаю облегчённые же (без картинок) объекты для вставки в БД и, собственно, вставляю их: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 16:54 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
С try/catch херня пока - забыл вырезать. Не обращайте внимания. Только на код в try. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 16:58 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
user7320С try/catch херня пока - забыл вырезать. Не обращайте внимания. Только на код в try. Надо было сохранение изменений в try запихать, да... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 16:59 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
МСУ, Не убедил авторЕдинственный плюс в разнесении блобов, а снижение трафика, а уменьшение памяти под кеш, более понятная структура, вообще имхо все тяжелые данные должны лежать в отдельной таблице, на худой конец о чем ты толкуешь)) - никто не запрещает, но даже в этом случае пользоваться атрибутом LazyLoadAttribute надо обязательно - что бы не возникало вопросов как у ТА ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 19:20 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Где-то в степи, не понял, о каком снижении трафика идет речь? Если мне блобы не нужны, я их не тяну. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 20:01 |
|
EF 5 - можно обновить записи в БД не загружая их?
|
|||
---|---|---|---|
#18+
Посмотрите мой код, пожалуйста. Это нормально работать с "облегчёнными" данными в памяти, а потом аттачить их к контексту, когда перекидываешь их из одной БД в другую при моих условиях? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2013, 10:13 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1349911]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
433ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 554ms |
0 / 0 |