Хорошо, поэтому я в основном пытаюсь определить, какой путь более эффективен в работе, когда проверяете, существуют ли элементы в базе данных.Лучший способ проверить, существует ли элемент в sql server ce?
Я использую LINQ to SQL на WP7 с SQL Server CE.
Я собираюсь импортировать несколько объектов в базу данных. Теперь есть довольно хорошая вероятность того, что некоторые из этих объектов уже существуют в базе данных, поэтому мне нужно проверить каждый элемент, когда они входят, и если он уже существует, пропустите его, иначе добавьте его.
Было два подхода, которые приходили на ум. Первым использовал Еогеасп и проверить, существует ли объект в БД с тем же именем:
foreach(var item in items)
{
//Make individual call to db for every item
var possibleItem = /*SQL SERVER STATEMENT WITH WHERE CONDITION*/;
}
Выполнение индивидуальных вызовов БД, хотя звучит довольно ресурсоемкими. Таким образом, другая идея состояла в том, чтобы сделать полный выбор на всех объектах в db и сохранить их в списке. И тогда в значительной степени делаю ту же концепцию с foreach, но теперь мне не нужно подключаться к db, у меня есть прямой доступ к списку. Что вы думаете об этих подходах? Есть ли способ лучше?
, когда вы сомневаетесь, просто попробуйте - нормалитесь, вы должны попытаться изменить ситуацию, чтобы вам не приходилось забирать и проверять каждый - в большинстве случаев вы можете делать Where, а затем foreach на основе этого запроса (если вы знаете, что я имею в виду), но без кода, который вы просто не можете сказать. Но я думаю, что SqlCe сделает некоторую индексацию в памяти, поэтому он не должен быть медленнее, чем a Where на основе списка (который имеет плохую производительность запросов O (n)) – Carsten