powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Есть ли способ сохранить объект в БД, не зная..
25 сообщений из 52, страница 1 из 3
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886661
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EF: Есть ли способ сохранить объект в БД, не зная есть он там или нет?

Я имею ввиду - не производя поиск "вручную" в БД.

Вот есть у меня объект, надо его записать в базу. Откуда он взялся и когда - никто не знает.

Предполагается, что кода должно быть минимум.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886664
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Attaching an existing entity to the context

If you have an entity that you know already exists in the database but which is not currently being tracked by the context then you can tell the context to track the entity using the Attach method on DbSet.

The entity will be in the Unchanged state in the context.

that you know... Что это за горячечный бред?!
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886670
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueEF: Есть ли способ сохранить объект в БД, не зная есть он там или нет?

Есть ли у данной задачи смысл? Можешь поделиться? Очень интересно.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886678
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Меня вообще поражает этот вопрос. Он появляется из раза в раз - и заставляет меня думать, что я далеко чего-то не понимаю.

Я пытаюсь для себя расставить метода работы с контекстом, в туторах они даны россыпью, и неясно, кто на каком уровне находится.

Если ответ - НЕЛЬЗЯ, то понятно - значит надо его искать в БД перед сохранением, вот и весь смысл. Чтобы это понять - и был сформулирован этот вопрос.

Но мне решительно непонятно, почему EF не берет это на себя? Ведь на самом деле - полагать, что мы ЗНАЕМ, что объект есть/нет в БД (или откуда он там пришел) - какая-то насмешка. А когда читаешь об этом на сайте у MS.. Слов нет.

У Оракла наряду с INSERT и UPDATE есть оператор MERGE, который как раз и выясняет - есть запись или нету.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886681
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас я вижу, что у работ с объектом в контексте EF - две разновидности. В зависимости - новый он или нет. У общего у кода этих разновидностей только db.saveChanges(); >:(
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886685
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У моей незамысловатой формы - восемь полей ссылочного типа, справочники для которых надо как-то рендерить в представлении.

Смысл один и тот же, но код разный)) В зависимости от того - есть объект в БД - или нет.
(Create/Edit)

Самый смех, что если бы я плюнул на всю эту virtual lazy context и работал исключительно бы с простыми типами - проблем бы не было.

Замороченный он какой-то, EF этот...
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886705
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueЕсли ответ - НЕЛЬЗЯ, то понятно - значит надо его искать в БД перед сохранением, вот и весь смысл. Чтобы это понять - и был сформулирован этот вопрос.

Да можно, но лучше не надо. Вот прям настаиваю, что не надо. Просто не надо, если нет на то веских причин. Спросил, чтобы понять является ли причина веской или нет.

MonochromatiqueЗамороченный он какой-то, EF этот...

Ну есть немного. Но проблема в том, что ты хочешь натянуть на EF какой-то свой сценарий работы с данными, вместо того, чтобы разобраться как работает и почему именно так устроен EF. Да, он предлагает в качестве основной одну стратегию и вокруг неё всё вертится. Для изменения данных в EF надо вытащить объект, изменить его, затем сделать SaveChanges. Так он работает. Это не значит, что другого пути совсем нет. Хочешь, пихни чистый SQL, но не жди согласованности контекста, что значит потери львиной доли смысла EF.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886707
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueСамый смех, что если бы я плюнул на всю эту virtual lazy context и работал исключительно бы с простыми типами - проблем бы не было.

До сих пор существуют люди, не воспринимающие никаких ORM, даже micro-ORM, предпочитая собирать свой, чистый, кошерный SQL с помощью манипуляций со строками. Ну и ниче так, живут себе, кодят...
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886846
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monochromatique, может просто не проснулся, но никак не могу догнать сути вопроса... Что такое "объект в БД"? Как понимаю в Вашем случае это просто строка в таблице или представлении, правильно? Каждую строку мы как правило идентифицируем через ID, так? На уровне репозитория/орм если у нас появился новый объект, мы даем ему идентификатор, добавляем его в контекст и делаем SubmitChanges/SaveChanges. В чем собственно проблема?
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38886932
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKI,

У меня в определенном месте программы есть объект, который нужно сохранить в БД.
Код будет либо разным, в зависимости от того - есть ли этот объект в базе, или нет.
Либо код будет всегда "избыточным", потому что каждый раз будет проверять - есть такой объект в базе - или нет.

В туторах от MS фраза, that you know меня вообще убила.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887011
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueУ меня в определенном месте программы есть объект, который нужно сохранить в БД.
Код будет либо разным, в зависимости от того - есть ли этот объект в базе, или нет.
Либо код будет всегда "избыточным", потому что каждый раз будет проверять - есть такой объект в базе - или нет.

В туторах от MS фраза, that you know меня вообще убила.
Ну создайте в таблице уникальные поля и сохраняйте объект через try catch, если объект с такими полями существует словите ексепшн...
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887025
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIMonochromatiqueУ меня в определенном месте программы есть объект, который нужно сохранить в БД.
Код будет либо разным, в зависимости от того - есть ли этот объект в базе, или нет.
Либо код будет всегда "избыточным", потому что каждый раз будет проверять - есть такой объект в базе - или нет.

В туторах от MS фраза, that you know меня вообще убила.
Ну создайте в таблице уникальные поля и сохраняйте объект через try catch, если объект с такими полями существует словите ексепшн...

O_O

Еще лучше...
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887123
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueEDUARD SAPOTSKI,

У меня в определенном месте программы есть объект, который нужно сохранить в БД.
Код будет либо разным, в зависимости от того - есть ли этот объект в базе, или нет.Идентификатор у этого объекта есть?
По нему определяется "есть ли этот объект в базе, или нет", или как-то иначе?
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887130
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueЛибо код будет всегда "избыточным", потому что каждый раз будет проверять - есть такой объект в базе - или нет.Офигеть какой избыточный код: How to create an upsert method
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887134
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Entity Framework 5.0: IDbSetExtensions.AddOrUpdate Method

P.S.: походу ТС в гугл забанили :)
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887149
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОфигеть какой избыточный код: How to create an upsert method

Проверять по значению Id на ноль, это весьма оригинально
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887153
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAMonochromatiqueЛибо код будет всегда "избыточным", потому что каждый раз будет проверять - есть такой объект в базе - или нет.Офигеть какой избыточный код: How to create an upsert method

Треш.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887197
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAОфигеть какой избыточный код: How to create an upsert method

Проверять по значению Id на ноль, это весьма оригинально Наоборот, это весьма банально :)
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887201
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueskyANAпропущено...
Офигеть какой избыточный код: How to create an upsert method

Треш.Ну ждите, пока Microsoft вам реализуют Upsert
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887203
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


Проверять по значению Id на ноль, это весьма оригинально Наоборот, это весьма банально :)

Угу. А если объект пришел из другого сервиса? Не с пустым ID?
Да и вообще - делать выводы из пустого ID - как-то дерзко.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887207
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще меня забавляют такие топики. Вот в MongoDB реализован Upsert и реализован банально: если есть документ с таким _id, то Update, иначе - Insert.

Если нет такого в EF, то в чём проблема реализовать-то?
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887211
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA...то в чём проблема...
Мне кажется проблема в том, что ТС не осознал мощь гуида и юзает инты с автоинкрементами
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887215
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKI,

ТС кроме ГУИДА ничего никогда не юзал.
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887216
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueskyANAпропущено...
Наоборот, это весьма банально :)

Угу. А если объект пришел из другого сервиса? Не с пустым ID?Значит сервис хочет обновить объект.
MonochromatiqueДа и вообще - делать выводы из пустого ID - как-то дерзко.Ну дак поведайте нам какие факторы говорят Вам, что объект новый, не томите? :)
...
Рейтинг: 0 / 0
EF: Есть ли способ сохранить объект в БД, не зная..
    #38887218
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueТС кроме ГУИДА ничего никогда не юзал.
Тогда я ваще ничего не понимаю
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 1 из 3
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Есть ли способ сохранить объект в БД, не зная..
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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