랙 모델과 서버 모델이 있습니다. 나는 다음을 수행 단일 서버를 검색하려면 현재 때, 명시 적 로딩을 지정합니다 : - :람다 식 내부에 포함 방법을 지정하는 방법
-public Server FindAllServer(int id)
{
return project.Servers.Where(c => c.ServerID == id)
.Include(a => a.OperatingSystem)
.Include(a2 => a2.DataCenter)
.Include(a3=>a3.Rack)
.Include(a4=>a4.ServerModel)
.Include(a5=>a5.Technology)
.Include(a6=>a6.VirtualMachines)
.Include(a7=>a7.TechnologyStatu)
.Include(a8=>a8.TechnologyBackUpStatu)
.Include(a9=>a9.TechnologyRole)
.SingleOrDefault();
}
하지만 지금은 랙 및 모든 서버/S를 표시하려면, 나는 다음과 같은했다
public Rack FindAllRack(int id)
{
return project.Racks.Where(c => c.RackID == id)
.Include(a => a.Servers)
.Include(a2 => a2.DataCenter)
.Include(a3 => a3.Firewalls)
.Include(a4 => a4.Routers)
.Include(a5 => a5.Technology)
.Include(a6 => a6.StorageDevices)
.Include(a7=>a7.Switches)
.Include(a8=>a8.Zone)
.SingleOrDefault();
}
그래서 같은 뭔가를 쓸 수있는 나는, 명시 적으로 랙에서 서버/S에 대한 모든 탐색 속성을 포함하도록 정의 할 수있는 방법을 확실하지 않다 : -
project.Racks.Where(c => c.RackID == id).Include(a => a.Servers.Include(………))
문제가있는 것입니다 I h 경우 랙 아래에 50 대의 서버를 설치 한 다음 각 서버마다 서버 탐색 속성을 검색하는 데 약 7 건의 요청이있을 것이므로 약 350 건의 요청이 있습니다 !!!
상위 개체에 대한 자식 컬렉션이있는 경우 프로덕션 수준 볼륨으로 데이터베이스가로드 될 때 SQL을 프로파일 링해야 할 수 있습니다. 이런 종류의 쿼리가 dev에서 잘 작동하고 그리드에서 생산이 중단되는 것을 보았습니다. 정말로 모든 어린이 기록이 정말로 필요하십니까? –
예 모든 아이 기록이 필요합니다. –
이러한 모든 하위 레코드를 포함하고 있습니다. 기본 랙 페이지에서이 랙과 연결된 서버, 스위치 등의 수를 표시합니다. 따라서 이러한 탐색 속성을 포함하지 않으면 각 탐색 속성의 개수를 가져 오는 별도의 요청이 전송되므로 문제가 발생할 수 있습니다. –