powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
25 сообщений из 106, страница 4 из 5
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507471
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДаже если из файлов, то кто гарантирует, что файлы грузятся в рамках одной сессии?
Он чё, дурак?
Закоммитить в базу и спрашивать зачем ef лезет в базу?
Всё в его руках. Хочет, пусть пачку до вечера готовит и потом заливает.
Хочет, по одной вставляет.
На сессионные дубли и межсессионные РАЗНЫЕ решения
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507482
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,

попробуй IDbSet<TEntity>.Local
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507491
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77,

О, интересно. Пригодится.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507500
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
Мил человек. Вам при вставке дубля нужно райзе от бд или тихо промолчать как будто его и небыло?
hVostt вам задавал вопрос про update документа.
Отвечать будем?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507508
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt вам задавал вопрос про update документа.
Отвечать будем?

Чёт не нашёл вопроса. Можешь повторить?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507517
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Блин, у skyANA было про обновление)).
Он стратег, сразу вкурил)
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507524
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt,
Блин, у skyANA было про обновление)).
Он стратег, сразу вкурил)

То, что skyANA вкурил это замечательно..

Лучше скажи, что курил ты? Не поделишься травкой?
Где вопрос про update дркумента?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507531
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
В орм обновление делается так orm.session.SaveOrUpdate
))
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507538
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123TsHeloWorlder,
Мил человек. Вам при вставке дубля нужно райзе от бд или тихо промолчать как будто его и небыло?
hVostt вам задавал вопрос про update документа.
Отвечать будем?

Суть такая. В базе есть такая таблица

Docs
Id DocNumber SomeData1 'GW1' 'test....'2 'FS1' 'test...'2 'GW2' 'test...'

Юзер загружает excel файл с точно такой-же структурой данных. Но проблема в том, что там могут быть данные которые имеют такие-же документы (с теми же DocNumber). Такие данные нужно отбросить. Просто проигнорировать. Первый раз вставили и все.
В данном случае нельзя больше вставлять в таблицу документы с номерами GW1, GW2, FS1.

Такая пока задача. Затем будет думать о том, чтобы не приходили такие грязные данные. Но пока задача стоит так.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507542
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
Для целостности базы и модели добавить уникальный ключик на поле.
В триггер before влепить одну строчку проверки на поле и exit без райзе молчком.
Всё.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507545
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,

но на самом деле я не пойму проблемы, вот способы как это сделать, чтобы не искать в локальном кэше EF:

1. читаем первый файл, складываем уникальные коды в Dictionary, читаем следующий файл, чистим от дублей с использованием этого Dictionary, потом в конце пишем все в базу

2. читаем первый файл, складываем уникальные коды в Dictionary, пишем первый файл в базу, читаем следующий файл, чистим от дублей с использованием этого Dictionary, пишем в базу

3. читаем первый файл, пишем первый файл в базу, делаем выбору всех существующих уникальных кодов из базы, складываем в Dictionary, читаем следующий файл, чистим от дублей с использованием этого Dictionary, пишем в базу

4. полностью делаем это средствами БД. например ms-sql умеет делать select по excel файлу, пишем в промежуточную таблицу, вторым sql запросом - перезаливаем без дублей в нужные таблицы. возможно получиться обойтись одним запросом, сразу лить в нужные таблицы

5. пишем тригер в базе, который перед вставкой будет проверять наличие дубля, как это подружить с EF - надо копать, хотя если потом просто убить контекст EF по завершении операции - то все думаю будет ок.

варианты 1 и 2 кстати будут быстрее, чем поиск по локальному кэшу EF, потому что Dictionary
варианты 4 и 5 не прокатят, если у вас на EF повешана дополнительная логика, типа подписка на события при вставке, обновлении и удалении сущностей, всю эту бизнес логику придется дублировать в базе
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507546
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл, перед чтением первого файла - Dictionary можно составить на основе уже существующих записей в БД
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507552
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще забыл, в 5 варианте можно оптимизировать - добавить уникальный некластерный индекс, или уникальный код документа сделать первичным ключом с кластерным индексом
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507553
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант 3 на тот случай, если загрузка файлов разнесена по времени, и нет возможности где-то временно сохранить Dictionary
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507554
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77,
Все верно. Но п.5 если не один заливает. А иначе зачем сервак?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507555
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

не понял вопроса? я имел ввиду, что если потом из этого контекста что-то прочитать - думаю у него моск взорвется, потому что в контексте есть некая запись, а в базе ее нет, потому что тригер нашел дубль

и разумеется все это при условии, что заливать будет контекст EF, если ado.net - то пофик собственно-то
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507561
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77,
Да. Совершенно верно.
Я бы для начала ТСу проставить ключик и обработать (загасить) райзе от него.
Возможно ему этого хватит.
Нефиг спрашивать Базу про дубликаты. Она сама скаже. На то она и База с большой буквы)))))
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507566
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANAДаже если из файлов, то кто гарантирует, что файлы грузятся в рамках одной сессии?
Он чё, дурак?
Закоммитить в базу и спрашивать зачем ef лезет в базу?
Всё в его руках. Хочет, пусть пачку до вечера готовит и потом заливает.
Хочет, по одной вставляет.
На сессионные дубли и межсессионные РАЗНЫЕ решения
Кто он? Функционал-то он небось не для себя реализует.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507567
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder Юзер загружает excel файл...
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507570
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt,
Блин, у skyANA было про обновление)).
Он стратег, сразу вкурил)Это называется расширяемость.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507572
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123TsHeloWorlder,
Для целостности базы и модели добавить уникальный ключик на поле.
В триггер before влепить одну строчку проверки на поле и exit без райзе молчком.
Всё.
То есть предлагаешь строго только построчно заливать? Потому как если сотня строк вставляется и одна из них уже есть в БД, то 99 молча не заливаются.
А пользователь сидит и думает: вроде ошибок нет, но и данные в БД тоже не появляются, дела.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507581
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAPetro123hVostt,
Блин, у skyANA было про обновление)).
Он стратег, сразу вкурил)Это называется расширяемость.
Впервые слышу в данном контексте.
Про триггер ты прав. Нету его без райзе с молчаливым выходом. На уровне ef надо гасить или saveOrUpdate в ОРМ. Которое он так хочет.
Будет без велосипедов.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507593
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта инфа устарела?
авторИз коробки, в MS Entity Framework есть неприятность с пакетным обновлением и удалением, данных: необходимо сначала достать все объекты из бд, далее в цикле обновить\удалить и затем применить изменения к бд. В итоге получаем больше обращений к бд, чем нужно.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507597
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANAпропущено...
Это называется расширяемость.
Впервые слышу в данном контексте.
Расширяемость - это легкость адаптации ПО к изменениям спецификации.

Petro123Про триггер ты прав. Нету его без райзе с молчаливым выходом. На уровне ef надо гасить или saveOrUpdate в ОРМ. Которое он так хочет.
Будет без велосипедов.
Вы зациклились на ef. ИМХО ничего не надо гасить. Мне видится, что нужно показать пользователю, что вот эти записи успешно загружены, а эти нет, потому как уже есть в БД.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507626
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Чисто потому что мне ef будет в следующем проекте))).
А ТС так прямо и сказал что ...хочу его )).
Без ef и его коллекций вообще нет проблем.
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 4 из 5
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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