【发布时间】:2012-03-14 21:20:15
【问题描述】:
好的,所以我基本上是在尝试确定在检查数据库中是否存在项目时哪种方式更有效。
我在带有 SQL Server CE 的 WP7 上使用 LINQ to SQL。
我将把多个对象导入数据库。现在很有可能其中一些对象已经存在于数据库中,所以我需要在每个项目进入时检查它们,如果它已经存在,则跳过它,否则添加它。
想到了两种方法。第一个是使用 foreach 并检查数据库中是否存在同名的对象:
foreach(var item in items)
{
//Make individual call to db for every item
var possibleItem = /*SQL SERVER STATEMENT WITH WHERE CONDITION*/;
}
虽然听起来相当耗费资源,但对数据库进行单独调用。所以另一个想法是对数据库中的所有对象进行完全选择并将它们存储在列表中。然后几乎用 foreach 做同样的概念,除了现在我不必连接到数据库,我可以直接访问列表。您对这些方法有何看法?有没有更好的办法?
【问题讨论】:
-
如果有疑问,请尝试 - 通常你应该尝试改变一些东西,这样你就不必 foreach 和检查每一个 - 在大多数情况下,你可以根据这个查询执行 Where 然后 foreach (如果你知道我的意思)但是没有代码你就不能说。但我认为 SqlCe 会在内存中做一些索引,所以它不应该比基于列表的 Where 慢(它的查询性能差 O(n))
标签: c# .net windows-phone-7 linq-to-sql sql-server-ce