powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
25 сообщений из 106, страница 3 из 5
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507369
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANA,
Минус только один.
Занафига вставлять в базу во Владике из Москвы ЗАВЕДОМО дубли.
Но может автор не все рассказал.
Что значит ЗАВЕДОМО? В xls-файле могут быть данные, что уже есть в основных таблицах, а могут и не быть.

Они загружаются в промежуточную таблицу, чтобы проще и быстрее их можно было обработать.

У тебя есть вариант получше?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507379
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Нет. Ему не нужна проверка в базе. Он просто грузит кучу xls и там есть дубли не с базой, а между файлами.
Решение выше писал. Строка кода.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507381
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderКак искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?

TsHeloWorlderМне нужно загрузить кучу данных, в которых могут встречатся дублирующая информация - ее мне нужно игнорировать:


TsHeloWorlderДело в том, что данные загружаются из разных файлов excel. Дубли могут быть, и нужно игнорировать повторные попытки загрузить.

Размытая модель. Локальные сущности, куча данных, загрузка...

По любому тут надо смотреть в сторону EF Extensions.

Как минимум:

1. Выбрать на клиента условия, по которым ты отберешь дубли.
2. Отобрать дубли.
3. Записать в БД не дубли bulk-ом с помощью EF Extensions.

Как максимум:
1. Сваять LINQ-запрос на вставку с условием и заслать его в БД с помощью EF Extensions.

Но не знаю, умеет ли это EF Extensions
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507382
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANA,
Нет. Ему не нужна проверка в базе. Он просто грузит кучу xls и там есть дубли не с базой, а между файлами.
Решение выше писал. Строка кода.
Ссылку-то дай :)
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507383
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Petro123,
hVostt,

Вы предлагаете загнать промежуточные данные во временную таблицу. А затем почистить от дублей. А как можно "почистить от дублей" на основе двух таблиц, находящихся в БД, силами EF ? Или вы все таки предлагаете создать в базе бизнес логику по чистке данных от дублей ? SQL команда Merge такое бы легко решила. Но где располагать эту команду ? создавать процедуру в БД, или вызывать из клиента, из EF ?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507389
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,

например выбрать все записи из промежуточной таблицы, что уже есть в основной и удалить:
https://stackoverflow.com/questions/869209/bulk-deleting-in-linq-to-entities/870081#870081
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507393
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:
Код: c#
1.
2.
3.
4.
5.
6.
var query =
    from temp in DbContext.DocumentsTemp
    where DbContext.Dosuments.Any(d => d.DocNumber == temp.DocNumber)
    select temp;

query.Delete();
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507395
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или выбрать только те документы из промежуточной таблицы, которых ещё нет в основной.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507399
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так то, смысла удалять нет. Проще сразу писать инсерт, который будет вставлять те данные, которых еще нет. после чего чистить всю временную таблицу. Но мне что-то не нравится это решение. EF тут сбоку-припеку вообще. Даже bulk insert и тот не родной, вроде как, а реализован сторонними разработчиками в виде расширения.
Проще на чистом ado.net все сделать.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507401
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,

разумно :)
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507408
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123И где же программирование, программисты? ))))
Код: c#
1.
2.
if (dictionary [НомерДокумента] != номерИзXLS) 
Add в базу


Дал ссылку skyANA
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507414
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
Завести свой массив словарь и проверять что там при вставке. Не понятно?
Формируешь пакет. А уж пакетная запись у всех орм есть.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507416
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

каким образом формируется dictionary ? И как это будет работать, если два человека с двух разных машин загружают данные?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507422
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderВы предлагаете загнать промежуточные данные во временную таблицу. А затем почистить от дублей. А как можно "почистить от дублей" на основе двух таблиц, находящихся в БД, силами EF ? Или вы все таки предлагаете создать в базе бизнес логику по чистке данных от дублей ? SQL команда Merge такое бы легко решила. Но где располагать эту команду ? создавать процедуру в БД, или вызывать из клиента, из EF ?

Силами EF этого делать не стоит. Стоит силами SQL. EF контекст позволяет отправлять в БД запросы SQL и получать результаты SELECT, и даже маппить их на классы, почти как Dapper.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507423
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
И разберись, все таки кто делает твои дубли. Сосед в базе при многопользовательском режиме это одно, и тв сам читая файлы это другое.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507425
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderПроще на чистом ado.net все сделать.

Если УЖЕ есть EF, то надо запросы отправлять через контекст EF, он поинтересней будет, чем голый ADO.NET.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507434
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Я предложил борьбу от своих дублей. От чужих кроме триггера или райзе при вставке ничего не спасет. Или EF кэш общий на все сессии и даст ответ?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507438
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

понятно, значит походу твоё решение не годится
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507439
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, я про дубли при загрузке, а skyANA про межсессионные соседей.
Так и спорим)).
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507442
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANA,
Я предложил борьбу от своих дублей. От чужих кроме триггера или райзе при вставке ничего не спасет. Или EF кэш общий на все сессии и даст ответ?

Плохое решение ты предложил.
Триггер не нужен нафиг.
EF имеет кеш на инстанс и используется только для предотвращения повторного извлечения сущности из БД по ID.

Продемонстрирую:

dbContext.SomeTable.Find(id) — кеш БУДЕТ работать
dbContext.SomeTable.SingleOrDefault(p => p.Id == id) — кеш работать НЕ БУДЕТ
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507443
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123В общем, я про дубли при загрузке, а skyANA про межсессионные соседей.
Так и спорим)).

Чё тут спорить, твоё решение не верно да ещё крайне не оптимально.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507450
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAPetro123,

понятно, значит походу твоё решение не годится
Я на 1 странице спросил, откуда дубли? На что он сказал - из файлов)))))
Он же не сказал, что в базе))).
Он дубли искал не закоммиченные.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507455
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЧё тут спорить, твоё решение не верно да ещё крайне не оптимально.
Пробовал или Пастернака не читал, но осуждаю...
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507457
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANAPetro123,

понятно, значит походу твоё решение не годится
Я на 1 странице спросил, откуда дубли? На что он сказал - из файлов)))))
Он же не сказал, что в базе))).
Он дубли искал не закоммиченные.
Даже если из файлов, то кто гарантирует, что файлы грузятся в рамках одной сессии?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507466
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVosttЧё тут спорить, твоё решение не верно да ещё крайне не оптимально.
Пробовал или Пастернака не читал, но осуждаю...

Как думаешь, если с крыши сигануть, разобьёшься?
Или надо попробовать, чтобы убедиться? :)

В твоё решении недостатки очевидны.
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 3 из 5
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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