Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : ef core 캐시 비활성화시 업데이트 방법 문의
글번호: 893
작성자: 안정준
작성일: 2020/10/26 오전 10:22:00 (2020/10/26 오전 10:22:00 수정)
조회수: 91

안녕하세요 블레이저강의 3번째 편이 올라와서 반가웠습니다.

 

블레이저로 개발을 하고 있는데 한가지 문제가 부닥쳤습니다.

 

ef core 로 repository를 만들어 블레이저 페이지내에서  DI를 사용했는데

리스트를 GetAllAsync후 DB에서 자료를 수정했을때 다시 GetAllAsync하면 수정된 자료가 반영이 되지 않습니다. 그래서 구글링해서

 

_context.ChangeTracker.QueryTrackingBehavior = Microsoft.EntityFrameworkCore.QueryTrackingBehavior.NoTracking; 트랙킹을 비활성화 해서

수정된 자료로 검색하는데는 성공했습니다.

그런데 문제가 수정에서 또 발생했습니다.

public async Task<bool> EditAsync(EX_EVENT model)
{

        _context.tbl_EX_EVENTS.Attach(model);;
         _context.Entry(model).State = EntityState.Modified;
         return (await _context.SaveChangesAsync() > 0 ? true : false);

}

EditAsync로 수정시 한번은 수정이 되나 두번째 같은 자료를 EditAsync 하면

Message = "The instance of entity type 'EX_EVENT' cannot be tracked because another instance with the same key value for {'EX_EVENT_NUM'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attach...

이런 에러가 뜹니다.

트랙킹을 활성화하고 아예 페이지를 강제로 리로드하면 DI가 다시 생성이 되어 최근 데이터로 검색도 되고 문제는 안생기는 추후 scope를 사용하면 다 날라가게되어 좋은 방법이 아닌것 같아 방법을 찾고 있습니다.

그리고 혹시 페이지를 리로드 하지 않고도 DI를 재 생성할 수 있는 방법이 있을까요?

 

결국 이러다 ef core 포기하고 dapper로 가야하나 고민중입니다.

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 asp.net &amp; core 를 다루는 기술 게시판 코드boardeditorFo... - 강현우 2020-11-11 44
현재글 ef core 캐시 비활성화시 업데이트 방법 문의 - 안정준 2020-10-26 91
  Re : ef core 캐시 비활성화시 업데이트 방법 문의 - 레드플러스 2020-10-26 51
  Re : Re : ef core 캐시 비활성화시 업데이트 방법 문의(1) - 안정준 2020-10-26 80
다음글 blazor server-side에서 cmd 창 띄우기 - 김동환 2020-10-24 76
 
손님 사용자 Anonymous (손님)
로그인 Home