我有一个名为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