inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0

21)REST API X EF Core 2편

EF로 만든 프로젝트를 개발서버에 올리니, 처음 로딩속도가 많이 느리네요.

183

darak

작성한 질문수 3

0

EF로 생성해서 개발서버에 올려놓았는데, 첫 로딩속도가 많이 느리네요.

 

개발사이트에 출근해서 접속하거나, IIS의 응용프로그램풀을 재시작후에 접근하면 5~6초 정도 걸립니다.

하지만 일단 연결이 되고 나면, 이후에는 1초 이내에 응답이 바로바로 옵니다.

 

접근도메인이 문제인가 싶어서, IP로 바꾸어도 동일하네요.

이런 현상이 나타나는 이유와, 해결 방법을 알고 싶습니다.

C# mvc rest-api 아키텍처 mssql ef-core asp.net-core

답변 2

0

개발자Park

그 외 관련 글도 https://forum.dotnetdev.kr/t/ef-core/11401/7

https://learn.microsoft.com/en-us/ef/core/querying/related-data/eager

https://stackoverflow.com/questions/78341605/entity-framework-core-is-slow-when-executing-the-first-query

추천드립니다.

감사합니다.

0

개발자Park

안녕하세요.개발자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}");

}

}

}

 

20) 16. 저장프로시저 쪽 new MapperConfiguration(cfg => { })

1

54

1

using (SqlConnection ~)을 하는 이유가 뭔가요?

0

115

2

이후 예정된 강의 문의를 드립니다

0

66

1

12_3강 AutoMapper 설명 중에 MapperConfiguration

2

86

1

Business Layer 종속성 추가 불가 문제

0

106

3

Console.WriteLine

0

62

1

iis 배포 후 view페이지 수정

0

132

2

8장 Controller 질문

0

80

2

DTO 여러개 대신 하나로

0

174

2

CS0618 SqlConnection

0

262

1

SqlConnection관련 질문

0

124

2

12강 듣던중...Controller.cs 질문입니다.

0

128

1

ASP.NET Core MVC를 비동기로 처리하는 이유가 무엇일까요?

0

221

1

프로젝트 배포 질문있습니다

0

147

2

MSSQL 설치 시 오류 발생

0

632

2

클래스 라이브러리 추가시

0

239

1

DB에서 조회된 다건의 데이터를 처리할 때

0

209

1

cshtml.css, cshtml.cs 비하인드 코드 추가 방법

0

416

1

로그인에서 받아온 Session을 활용하고 자 할 때

0

311

1

Request.Query는 배열로는 받을 수 없나요?

0

368

2

Single View Engine은 뭘까요?

0

195

1

Results API가 뭔가요?

0

231

1

QueryString 대소문자 구분

0

455

1

화면 단이 아닌 서비스 단에서 파라미터 추가

0

231

1