|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
skyANAДаже если из файлов, то кто гарантирует, что файлы грузятся в рамках одной сессии? Он чё, дурак? Закоммитить в базу и спрашивать зачем ef лезет в базу? Всё в его руках. Хочет, пусть пачку до вечера готовит и потом заливает. Хочет, по одной вставляет. На сессионные дубли и межсессионные РАЗНЫЕ решения ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:30 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
TsHeloWorlder, попробуй IDbSet<TEntity>.Local ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:39 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
17-77, О, интересно. Пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:47 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
TsHeloWorlder, Мил человек. Вам при вставке дубля нужно райзе от бд или тихо промолчать как будто его и небыло? hVostt вам задавал вопрос про update документа. Отвечать будем? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 13:03 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123hVostt вам задавал вопрос про update документа. Отвечать будем? Чёт не нашёл вопроса. Можешь повторить? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 13:17 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
hVostt, Блин, у skyANA было про обновление)). Он стратег, сразу вкурил) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 13:37 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123hVostt, Блин, у skyANA было про обновление)). Он стратег, сразу вкурил) То, что skyANA вкурил это замечательно.. Лучше скажи, что курил ты? Не поделишься травкой? Где вопрос про update дркумента? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 13:42 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
hVostt, В орм обновление делается так orm.session.SaveOrUpdate )) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 13:46 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123TsHeloWorlder, Мил человек. Вам при вставке дубля нужно райзе от бд или тихо промолчать как будто его и небыло? hVostt вам задавал вопрос про update документа. Отвечать будем? Суть такая. В базе есть такая таблица Docs Id DocNumber SomeData1 'GW1' 'test....'2 'FS1' 'test...'2 'GW2' 'test...' Юзер загружает excel файл с точно такой-же структурой данных. Но проблема в том, что там могут быть данные которые имеют такие-же документы (с теми же DocNumber). Такие данные нужно отбросить. Просто проигнорировать. Первый раз вставили и все. В данном случае нельзя больше вставлять в таблицу документы с номерами GW1, GW2, FS1. Такая пока задача. Затем будет думать о том, чтобы не приходили такие грязные данные. Но пока задача стоит так. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:00 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
TsHeloWorlder, Для целостности базы и модели добавить уникальный ключик на поле. В триггер before влепить одну строчку проверки на поле и exit без райзе молчком. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:08 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
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 повешана дополнительная логика, типа подписка на события при вставке, обновлении и удалении сущностей, всю эту бизнес логику придется дублировать в базе ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:12 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
забыл, перед чтением первого файла - Dictionary можно составить на основе уже существующих записей в БД ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:14 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
еще забыл, в 5 варианте можно оптимизировать - добавить уникальный некластерный индекс, или уникальный код документа сделать первичным ключом с кластерным индексом ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:18 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
вариант 3 на тот случай, если загрузка файлов разнесена по времени, и нет возможности где-то временно сохранить Dictionary ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:22 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
17-77, Все верно. Но п.5 если не один заливает. А иначе зачем сервак? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:25 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123, не понял вопроса? я имел ввиду, что если потом из этого контекста что-то прочитать - думаю у него моск взорвется, потому что в контексте есть некая запись, а в базе ее нет, потому что тригер нашел дубль и разумеется все это при условии, что заливать будет контекст EF, если ado.net - то пофик собственно-то ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:28 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
17-77, Да. Совершенно верно. Я бы для начала ТСу проставить ключик и обработать (загасить) райзе от него. Возможно ему этого хватит. Нефиг спрашивать Базу про дубликаты. Она сама скаже. На то она и База с большой буквы))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:45 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123skyANAДаже если из файлов, то кто гарантирует, что файлы грузятся в рамках одной сессии? Он чё, дурак? Закоммитить в базу и спрашивать зачем ef лезет в базу? Всё в его руках. Хочет, пусть пачку до вечера готовит и потом заливает. Хочет, по одной вставляет. На сессионные дубли и межсессионные РАЗНЫЕ решения Кто он? Функционал-то он небось не для себя реализует. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:52 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
TsHeloWorlder Юзер загружает excel файл... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:52 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123hVostt, Блин, у skyANA было про обновление)). Он стратег, сразу вкурил)Это называется расширяемость. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:53 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123TsHeloWorlder, Для целостности базы и модели добавить уникальный ключик на поле. В триггер before влепить одну строчку проверки на поле и exit без райзе молчком. Всё. То есть предлагаешь строго только построчно заливать? Потому как если сотня строк вставляется и одна из них уже есть в БД, то 99 молча не заливаются. А пользователь сидит и думает: вроде ошибок нет, но и данные в БД тоже не появляются, дела. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 14:59 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
skyANAPetro123hVostt, Блин, у skyANA было про обновление)). Он стратег, сразу вкурил)Это называется расширяемость. Впервые слышу в данном контексте. Про триггер ты прав. Нету его без райзе с молчаливым выходом. На уровне ef надо гасить или saveOrUpdate в ОРМ. Которое он так хочет. Будет без велосипедов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 15:13 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Эта инфа устарела? авторИз коробки, в MS Entity Framework есть неприятность с пакетным обновлением и удалением, данных: необходимо сначала достать все объекты из бд, далее в цикле обновить\удалить и затем применить изменения к бд. В итоге получаем больше обращений к бд, чем нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 15:33 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
Petro123skyANAпропущено... Это называется расширяемость. Впервые слышу в данном контексте. Расширяемость - это легкость адаптации ПО к изменениям спецификации. Petro123Про триггер ты прав. Нету его без райзе с молчаливым выходом. На уровне ef надо гасить или saveOrUpdate в ОРМ. Которое он так хочет. Будет без велосипедов. Вы зациклились на ef. ИМХО ничего не надо гасить. Мне видится, что нужно показать пользователю, что вот эти записи успешно загружены, а эти нет, потому как уже есть в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 15:37 |
|
Как искать сущности, которые еще не сохранены в бд, т.е. которые пока только локальные ?
|
|||
---|---|---|---|
#18+
skyANA, Чисто потому что мне ef будет в следующем проекте))). А ТС так прямо и сказал что ...хочу его )). Без ef и его коллекций вообще нет проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 16:05 |
|
|
start [/forum/moderation_log.php?user_name=Lev+P]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 439ms |
total: | 728ms |
0 / 0 |