Din*_*h M 1 c# linq performance ado.net using
using (var db1 = new DataBase1Entities())
{
using (var db2 = new DataBase2Entities())
{
var list = (from obj in db2.Table1
where !db1.Table2.Any(i => i.Table2Col == obj.Table1Col)
select obj).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何从一个数据库表中检索值并将其与另一个数据库表进行比较?如果上面的代码是正确的,那么会导致性能问题吗?
您似乎不知道-statement 的using作用。实际上,它\xc2\xb4s只不过是一个try-finally块,其中在finally中\xc2\xb4s调用了Dispose. 所以你的代码被翻译成以下内容:
DataBase1Entities db1 = null;\ntry \n{\n db1 = new DataBase1Entities();\n DataBase1Entities db2 = null;\n try \n {\n db2 = new DataBase2Entities()\n // do something with db2\n }\n finally \n {\n if(db2 != null) db2.Dispose(); }\n }\n}\nfinally\n{\n if(db1 != null) db1.Dispose();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n因此,它\xc2\xb4s 不是using可能会或可能不会影响性能的因素,而是Dispose. 但是,您根本不应该为此烦恼,因为您必须致电Dispose. 不这样做是一个非常糟糕的主意 - 特别是如果由于任何性能问题而这样做。Dispose将释放任何非托管资源,例如文件处理程序。如果你\xc2\xb4不在那里调用它\xc2\xb4s根本没有办法释放这些资源,这可能会产生内存泄漏。
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |