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

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

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

Предполагается, что кода должно быть минимум.
...
Рейтинг: 0 / 0
24.02.2015, 00:46
    #38886664
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF: Есть ли способ сохранить объект в БД, не зная..
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
24.02.2015, 01:13
    #38886670
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF: Есть ли способ сохранить объект в БД, не зная..
MonochromatiqueEF: Есть ли способ сохранить объект в БД, не зная есть он там или нет?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

O_O

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

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

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

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

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

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

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


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

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

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

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

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


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