我有一個名爲IDsList的整數列表,用於使用實體框架連接從名爲MyTbl的表中提取XML列表。 XML字符串然後用於執行其他任務。以下哪一項會更好?循環中的實體框架連接
方法1
var IDsList = new List<Int32>() {17, 23, 47, 62, 63, 79, 85, 91, 100}; // user input
List<String> XMLStrs = null;
using (var ctx = new DatabaseEntities()) {
XMLStrs = IDsList.Select (i => Ctx.MyTbl.First (tr => tr.id == i).xml_str).ToList();
}
XMLStrs.AsParallel().ForAll (xs => {
// Do something in parallel
});
方法2
var IDsList = new List<Int32>() {17, 23, 47, 62, 63, 79, 85, 91, 100}; // user input
IDsList.AsParallel().ForAll (i => {
using (var ctx = new DatabaseEntities()) {
var xs = ctx.MyTTbl.First (tr => tr.id == i).xml_str;
// Do something with xs
}
});
還是有不同的方法,該方法是更地道C#?
請注意 IDslist通常是一個更長的列表,通常數以千計的長度。並且每個獨立的xs執行時間與其他時間大致相同。
你應該注意的是,根據親和力的機器和你的過程,方法#2可以創建大量的數據庫連接,本質上觸發一些網絡中的DOS過濾器。 – doogle 2012-01-09 18:54:16