엔티티 프레임 워크 연결을 사용하여 MyTbl이라는 테이블에서 XML 문자열 목록을 추출하는 데 사용되는 IDsList라는 정수 목록이 있습니다. 그런 다음 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 번호는 다른 방법이 있는가?
IDList는 일반적으로 길이가 더 긴 목록으로, 일반적으로 수천 개에 이릅니다. 그리고 xs의 특정 값에 대한 각각의 개별 실행은 대략 다른 시간만큼 소요됩니다. 당신이 EF 4.1의 IDsList에 존재하는 ID를 가지고있는 행을 얻으려고 노력하는 경우
프로세스 # 2가 매우 많은 양의 데이터베이스 연결을 생성하여 본질적으로 일부 네트워크에서 DOS 필터를 트리거 할 수 있습니다. – doogle