powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
106 сообщений из 106, показаны все 5 страниц
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39506771
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно загрузить кучу данных, в которых могут встречатся дублирующая информация - ее мне нужно игнорировать:

Код: c#
1.
2.
  if (DbContext.Documents.FirstOrDefault (x=> x.DocNumber== y.DocNumber) == null)
    DbContext.Documents.Add (y);



Но оно не работает, если после каждой вставки не сохранять информацию в БД. А мне не хотелось бы вызывать SaveChanges после каждой строки документа, состоящего из тысяч строк.

Можно как-то заставить EF при поиске искать и в локальном кеше ?


PS. Вообще можно ли сделать так, чтобы EF при вставке в БД сам проверял наличие информации (по поисковому запросу - например по номеру документа), и вставлял только отсутствующую ? Т.е. некий аналог SQL Merge. Просто, ведь, DbContext.Documents.FirstOrDefault тоже каждый раз будет делать обращение к бд. А значит будет тысячи обращений, при вставке данных. Хотелось бы свести это все к единственному обращению в базу.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39506828
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
Если поиск по первичному ключику PK то должно все работать.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39506851
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Не по первичному ключу. Добавляется документ с уникальным номером. А ключ это сгенеренный в базе ID. Хотелось бы иметь возможность искать в локальном кэше по номеру документу. А еще больше хотелось бы, чтобы уже при bulk вставке в базу производились эти проверки. Чтобы не пулять тысячу маленьких запросиков, а один, пусть и большой.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39506867
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут не подскажу. EF не знаю.
А если так: Коллекция строк изначально должна быть без дублей? Откуда дубляж?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39506953
ackidZS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется что переносить какую-то даже простейшую BL в EF не имеет никакого смысла да и не совсем корректно. Почему бы не вставлять данные уже заведомо отфильтрованные.
А проверять у БД все равно придется , если например там уже есть строка с таким номером документа.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507010
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что данные загружаются из разных файлов excel. Дубли могут быть, и нужно игнорировать повторные попытки загрузить.

Это можно сделать через:
Код: c#
1.
2.
3.
if (DbContext.Documents.FirstOrDefault (x=> x.DocNumber== y.DocNumber) == null)
{    DbContext.Documents.Add (y);
    DbContext.SaveChanges();  }



Но мне не нравится шквал запросов в базу данных. По уму бы все делать в одном запросе.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507017
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любой ОРМ проверяет разность объектов по PK ID в базе.
У тебя объект ещё не сохранялся значит id не назначен.
Значит сравнение по Обычному полю это бизнес логика и должна быть вне EF. Выше верно сказали.
Один входной файл это сессия и коммит. Либо собирай их вместе и коллекцией dictionary отбрось дубли.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507029
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Дубли могут быть в РАЗНЫХ файлах. Т.е. нужно проверять наличие документа из файла с теми, что уже загружены в базу. Т.е. делать тысячу запросов в базу вида FirstOrDefault (x=> x.DocNumber== y.DocNumber). Как я могу от этого избавится ?

Как можно сделать bulk вставку с проверкой в момент добавления ? Ну я могу конечно написать процедуру t-sql и закидывать туда табличный параметр - но это все без EF. А с EF можно что-то сделать более менее эффективное в плане производительности то ?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507031
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
IMHO EF и любой ОРМ не пркдназначен для массовой пакетной заливке ....bulk.
Делай без него хранимкой или xml, json, ....
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507035
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
Еще вариант, список TDict <int> и очистка когда решил скинуть в базу.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507040
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Любой ОРМ проверяет разность объектов по PK ID в базе.
В NHiberbate есть возможность настроить проверку не по ID, а по полям, так что не стоит обобщать.
Возможно и в EF это есть.

Но ИМХО задачу явно надо решать иначе.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507043
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderДубли могут быть в РАЗНЫХ файлах.
А как Вы понимаете, что это именно дубли, а не обновлённая версия данных?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507052
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderМожно как-то заставить EF при поиске искать и в локальном кеше ?

Никак. Кеш у EF не для того, чтобы по нему выполнять запросы. Поэтому никак вообще. Совсем.
Прям тотальное НЕТ.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507054
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderА с EF можно что-то сделать более менее эффективное в плане производительности то ?
Хм, AddOrUpdate ?

Код: c#
1.
DbContext.Documents.AddOrUpdate(d => d.DocNumber, document);
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507056
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderДубли могут быть в РАЗНЫХ файлах. Т.е. нужно проверять наличие документа из файла с теми, что уже загружены в базу.

Грузите всё в отдельную таблицу, потом делайте запрос на выявление и удаление дубликатов, потом сливайте данные.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507058
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAХм, AddOrUpdate ?

Код: c#
1.
DbContext.Documents.AddOrUpdate(d => d.DocNumber, document);



Т.е. по натуральному ключу И это не производительно для большого объёма строк. На каждую запись будет запрос в БД.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507059
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,

Ещё вариант по-сложнее, постройте индекс в памяти по данным в БД, и оперируйте этим индексом.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507060
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Я немного шире взял.
Т.е. в разных сессиях, параллельно 2 юзверя правят Один объект.
У хибера один, это значит по id. Но в разных сессиях.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507066
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И где же программирование, программисты? ))))
Код: c#
1.
2.
if (dictionary [НомерДокумента] != номерИзXLS) 
Add в базу
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507078
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttTsHeloWorlderДубли могут быть в РАЗНЫХ файлах. Т.е. нужно проверять наличие документа из файла с теми, что уже загружены в базу.

Грузите всё в отдельную таблицу, потом делайте запрос на выявление и удаление дубликатов, потом сливайте данные.
Я за этот вариант.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507086
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я за все варианты).
БЛ может быть в базе и может коде c# кто базу не любит.
Удачи аффтару!
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507094
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123БЛ может быть в базе и может коде c# кто базу не любит.

А можно до безумия любить базу, любить писать SQL запросы,.. и всё равно не размещать БЛ в базе, потому что интеллекта хватает — не делать таких глупых вещей
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507123
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Дак ты сам предложил бл в базе).
Я все варианты люблю если чё.))
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507136
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt,
Дак ты сам предложил бл в базе).
Я все варианты люблю если чё.))
Это не БЛ в базе. Просто сырые данные заливаются в специальные таблицы.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507145
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Главное верить что это не БЛ).
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507155
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANA,
Главное верить что это не БЛ).
Просто вставить данные? Это не БЛ.
Иначе получается, что Вы считаете, что у ТС сейчас логика размазана по коду и БД, потому как вставка данных у него присутствует.
Но Вы ведь так не считаете, верно? :)
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507166
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Сущность в модели ДокументыВприхожейНаПолу будет?
Если нет, то это обслуживающий код и данные.
Если сервис обслуживания в базе, то это БЛ. Если этот же массив-коллекция-табличка в оперативке, то это БЛ не в базе.
Попробуй хибером поработай со временной таблой.
Если у него бардак на клиенте, то не надо свалку из бд делать.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507168
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Вопром опять в профессионализме. Как умеет, пусть делает. Он запрашивает обычный рядовой параметр объекта и удивился что ef полез в бд за СВЕЖИМИ данными)
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507173
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если сервис обслуживания в базе, то это БЛ. Если этот же массив-коллекция-табличка в оперативке, то это БЛ не в базе.

Я правильно понимаю, если приложение отправляет в базу SQL-запрос, это уже БЛ в базе данных?
А как только данные получены в приложение и оно с ними работает, это уже БЛ в приложении?



YouTube Video
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507210
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли приложение отправляет в базу SQL-запрос, это уже БЛ в базе данных?
а ты не ломай голову.
Критерии появляются когда надо классифицировать и отделять одно от другого.
Если это не требуется, то и вопроса нет.
Все решения и подходы одинаковы как пылесосы.
У ТСа БЛ - это загнать таблички XLS в базу))).
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507216
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Критерии появляются когда надо классифицировать и отделять одно от другого.

Т.е. они сами по себе появляются? С языка слетают?


Petro123Если это не требуется, то и вопроса нет.

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

Petro123Все решения и подходы одинаковы как пылесосы.
У ТСа БЛ - это загнать таблички XLS в базу))).

Я эту задачу решал абсолютно разными способами.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507217
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЛюбая область знаний требует систематизации, понятий и терминологии. Иначе специалисты будут вести себя как базарные бабки на лавочке, у каждого свои понятия, и каждый как хочет на любой лад их выкручивает.
ну дак приводи свои термины.
Я сказал про сущность - ты ноль реакции, только видео запостил.
Код: c#
1.
Я эту задачу решал абсолютно разными способами. 


так чё мы спорим? )) Мне оба решения нравятся.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507218
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
лучше подскажи, NuGet пакеты и файлы надо в Git загонять или нет?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507224
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANA,
Сущность в модели ДокументыВприхожейНаПолу будет?
Если нет, то это обслуживающий код и данные.
Если сервис обслуживания в базе, то это БЛ. Если этот же массив-коллекция-табличка в оперативке, то это БЛ не в базе.
Попробуй хибером поработай со временной таблой.
Если у него бардак на клиенте, то не надо свалку из бд делать.
Что есть модель? Что такое сервис обслуживания в базе? И при чем тут вставка сырых данных куда-либо?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507225
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt,
лучше подскажи, NuGet пакеты и файлы надо в Git загонять или нет?
Хранить в репозитории? Нет, не нужно.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507246
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Модель, это entity сущности, первая буква в ef
Обслуживающий код это все что не там.
Т.е. Логика ИС.
Сырые от Несырых отличает бизнес логика. Даже в виде галочки или sql.
Если приложение учетка - записал, прочитал.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507247
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Можно и со второй стороны рассмотреть.
Есть одна или несколько коллекций в сессии из xls.
Коллекцию сессионную можно разместить как в оперативке, так и базе.
Если в базе, то мы логику переносим в базу. Если нет, то в приложение или на АппСервер.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507248
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAPetro123hVostt,
лучше подскажи, NuGet пакеты и файлы надо в Git загонять или нет?
Хранить в репозитории? Нет, не нужно.
Спс
Тоже склоняюсь с этому.
Значит если чистая машина, то получит ошибку компиляции и доустановит в ide пакеты
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507250
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANAпропущено...

Хранить в репозитории? Нет, не нужно.
Спс
Тоже склоняюсь с этому.
Значит если чистая машина, то получит ошибку компиляции и доустановит в ide пакеты
Не получит, если перед сборкой выполнится restore.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507273
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt,
лучше подскажи, NuGet пакеты и файлы надо в Git загонять или нет?

Нет конечно! Надо развернуть свой NuGet-сервер, сборки на билд-сервере тоже упаковывать в NuGet, публиковать в feed и публиковать оттуда.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507279
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Модель, это entity сущности, первая буква в ef
Обслуживающий код это все что не там.

Ток прочитал статью на хабре, чувак опечален, что Microsoft не создала свои абстракции поверх Entity Framework. Вот настолько продвинулось заболевание EF головного мозга. EF это всего лишь ORM, никаких моделей нет, есть одна модель базы данных, и классы, в которые EF запихивает содержание таблиц, затем отслеживает изменения в классах и запихивает изменения обратно. Инструмент безусловно классный и хороший, но не надо придумывать новую терминологию на EF и строить поверх свои теории.

Бизнес-логика в базе данных, это ХП, функции, триггеры. И никакой EF тут не при чём. Выполнение клиентом SQL это не бизнес-логика в базе. Ни в какой вселенной.


Petro123Сырые от Несырых отличает бизнес логика. Даже в виде галочки или sql.
Если приложение учетка - записал, прочитал.

Выдумали себе терминологию? Сырыми (RAW) данными называются необработанные данные, не имеющие чёткой спецификации. Спецификация СУБД насчёт хранимых данных — предельно чёткая. Так что не выдумывай пожалуйста.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507298
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Можно и со второй стороны рассмотреть.
Есть одна или несколько коллекций в сессии из xls.
Коллекцию сессионную можно разместить как в оперативке, так и базе.
Если в базе, то мы логику переносим в базу. Если нет, то в приложение или на АппСервер.
Хорошо, давай по пунктам.

1. Есть у нас некий источник данных со своей структурой. В данном случае файл xls с плоской структурой;
2. Есть у нас приёмник данных - такая же плоская таблица, но уже в БД;
3. Есть некий загрузчик, написанный на C#, что умеет парсить xls-файл, знает как отображать структуру источника на структуру приёмника и, собственно, загружать данные из первого в последний без дополнительных проверок на дубликаты, орфографию и пунктуацию.

И вот логика - это п. 3. И, очевидно, что она не в БД :)

А дальнейшая обработка если будет реализована средствами СУБД, то логика обработки будет в БД.
А если на C#, то логики обработки не будет в БД. Всё просто.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507313
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAбез дополнительных проверок на дубликаты, орфографию и пунктуацию.
Зачем это загружать в сессии?
В лапшекоде конечно нет никакой логики, бизнеса и смысла.
Т.е. эта табла мусорница вне модели.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507318
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА дальнейшая обработка
Ок. Давай я скажу что вы НАЧАЛИ переносить бл в бж ))))
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507323
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANAбез дополнительных проверок на дубликаты, орфографию и пунктуацию.
Зачем это загружать в сессии?
В лапшекоде конечно нет никакой логики, бизнеса и смысла.
Т.е. эта табла мусорница вне модели.
What?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507324
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANAА дальнейшая обработка
Ок. Давай я скажу что вы НАЧАЛИ переносить бл в бж ))))
What?
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507327
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttнеобработанные данные, не имеющие чёткой спецификации.да! Спецификации по бизнесу и предметке.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507328
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Скажу по другому. БД для хранения не сырых данных, а данных по модели с хранением между сессиями.
Временные в сессии делают для бл в бд. Но есть конечно исключения.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507337
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANA,
Скажу по другому. БД для хранения не сырых данных, а данных по модели с хранением между сессиями.
Временные в сессии делают для бл в бд. Но есть конечно исключения.
Будет проще, если ты расскажешь какие видишь минусы в вышеописанном подходе.
А то ведь он работает и работает хорошо. И никто его никогда не считал исключением :)
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507349
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Минус только один.
Занафига вставлять в базу во Владике из Москвы ЗАВЕДОМО дубли.
Но может автор не все рассказал.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #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
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #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
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507631
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Я не то чтобы его хочу. Просто он уже есть. И хотелось бы задействовать его для решения этой задачи - раз он есть.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507641
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlder,
Уникальный индекс поставил?
Ошибку юзверю показал?
Это всё равно делать в любом случае.
А не 5 страниц мусолить.
Про saveOrUpdate чем тебя не устроит если он обновит запись?
Это штатная работа ОРМ.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507681
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Индекс стоит уже конечно. ну ладно в общем. идею я понял, спасибо. Тему можно и закрывать )
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507693
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77варианты 1 и 2 кстати будут быстрее, чем поиск по локальному кэшу EF, потому что Dictionary

Не надо искать по локальному кешу. Это плохая практика. Кеш не для этого.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507694
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВы зациклились на ef. ИМХО ничего не надо гасить. Мне видится, что нужно показать пользователю, что вот эти записи успешно загружены, а эти нет, потому как уже есть в БД.

+100500, чё вы к EF привязались, пристали как банный лист! Задача выходит за рамки ОРМ.
...
Рейтинг: 0 / 0
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
    #39507695
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsHeloWorlderPetro123,

Я не то чтобы его хочу. Просто он уже есть. И хотелось бы задействовать его для решения этой задачи - раз он есть.

Ты можешь задействовать EF, но только не его ORM часть.
Тебе надо запихать грязные данные в БД, чтобы потом их очистить,
и БД как нельзя лучше создана для этого, выполняешь запрос,
который берёт только уникальные записи из «грязной» таблицы,
при чём такие, которых нет в «чистой».

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


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