У меня есть проект C#, который использует компактную версию sqlserver и структуру сущности для доступа к данным. Мне нужно вставить или обновить большое количество строк, более 5000 или более, в db, поэтому, если ключ существует, обновите запись, если не вставьте ее. Я не могу найти способ сделать это с компактной версией и EF с ужасной производительностью, т. Е. Взять 2 минуты плюс на ядро i7. Я попытался найти запись, чтобы увидеть, существует ли она, а затем вставлять, если нет, или обновлять, если это так, поиск - это убийца. Я попытался скомпилировать поисковый запрос и это только немного улучшилось. Еще одна вещь, которую я попытался - вставить запись в try catch, и если она не обновляется, но это заставляет меня сохранять изменения в каждой записи, чтобы получить исключение, а не в конце, которое является убийцей производительности. Очевидно, что я не могу использовать хранимые процедуры, так как это компактная версия. Кроме того, я посмотрел на просто выполнение t-sql непосредственно так или иначе на db, но отсутствие инструкций процесса в компактном, похоже, не допускает этого. Я искал мир из идей. Я действительно хотел использовать компактный, если мог, чтобы выразить за преимущества развертывания и способность помешать пользователю копаться вокруг db. Любые предложения будут оценены.Выполнение вставки ИЛИ Обновление (upsert) на SQL Server compact edition
Благодаря
Спасибо за предложения. Я собираюсь потратить некоторое время на завтра, проверяя эти идеи. Сегодня я пробовал различные способы использования sql express и его молниеносно, даже не используя хранимые процедуры. Использование хранимых процедур и нового оператора слияния почти мгновенно. – RBear