好的,所以我基本上是在尝试确定在检查数据库中是否存在项时,哪种方式的性能更有效。
我在带有SQL Server CE的WP7上使用LINQ to SQL。
我将把多个对象导入数据库。现在有一个很好的可能性,这些对象中的一些已经存在于数据库中,所以我需要在它们进入时检查每一项,如果它已经存在,则跳过它,否则添加它。
有两种方法浮现在脑海中。第一个是使用foreach并检查db中是否存在同名的对象:
foreach(var item in items)
{
//Make individual call to db for every item
var possibleItem = /*SQL SERVER STATEMENT WITH WHERE CONDITION*/;
}尽管对数据库进行单独调用听起来相当耗费资源。因此,另一个想法是对数据库中的所有对象进行完全选择,并将它们存储在列表中。然后对foreach做了几乎相同的概念,除了现在我不需要连接到db,我可以直接访问列表。你对这些方法有什么看法?有没有更好的方法?
发布于 2012-03-15 05:40:51
如果您可以轻松地对项目进行排序,则可以从数据库中进行选择,并在浏览数据库时逐步执行列表,以确定哪些项目是新的。这应该比在保留内存的情况下进行多次选择要快得多。
using(var reader = cmd.ExecuteReader())
{
while(reader.HasRows && reader.Read())
{
var id = reader.GetInt32(0);
// test how id compares to the memory list
}
}但如果内存不重要,为了简单起见,我可能只会将数据库中的所有键读取到内存中。
https://stackoverflow.com/questions/9710456
复制相似问题