작성
·
130
답변 2
0
안녕하세요.개발자park입니다.
[Q
개발사이트에 출근해서 접속하거나, IIS의 응용프로그램풀을 재시작후에 접근하면 5~6초 정도 걸립니다.
하지만 일단 연결이 되고 나면, 이후에는 1초 이내에 응답이 바로바로 옵니다.
]
1.ADO.NET보다 일단 EF Core가 느립니다.
★2.context에 데이터 load시 시간이 걸리는 것으로 추측됩니다.
=>Related Data 로드시 Loading전략을 사용합니다
예시로 써 Eager loading 또는 Greedy loading으로 불리는 Loaidng전략 관련된 코드를 추가해줍니다.
쉬운 방법으로 예를 들겠습니다.
ASP.NET Core MVC프로젝트의 program.cs에 다음과 같은 코드를 추가할 수 있습니다.
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
//여기서부터 필요하신 코드라고 생각됩니다.
//로딩 전략 사용하기
//City와 MyTest는 Model에 해당하며 1:N 즉 One to Many관계에 속합니다.
//City와 MyTest는 1주~2주내로 새로 출시되는 강의에서 사용되는 Model입니다.
//Model이 더 많을 경우 City와 MyTest처럼 Model들을 Loading해주시면됩니다.
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
//SeedData seedData = new SeedData();
//seedData.Initialize(services);
using (var context = new ApplicationDbContext(
services.GetRequiredService<
DbContextOptions<ApplicationDbContext>>()))
{
var mytest = context.MyTest.Include(c => c.City);
foreach (var test in mytest)
{
Console.WriteLine($"{test.Name}연결된 {test.City?.Name}");
}
}
}