dotNET
-
[EntityFrameWork Core] The instance of entity type cannot be tracked 오류 발생시 해결방안.NET/개념 및 유용한 팁 2021. 3. 27. 13:52
개발 중 이런 오류가 발생했다. The instance of entity type 'masterTbl' cannot be tracked because another instance with the same key value for {'idx', 'seq'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values. EFCore에서 검색한 객체를 T..
-
[EntityFramework Core] dbContext 여러 번 사용시 유의사항 (feat. Dbset 프로퍼티 데이터 불일치 현상).NET/개념 및 유용한 팁 2021. 3. 6. 11:52
회사에서 솔루션 개발중 겪은 뻘짓이 있어 기록한다. 현재 메일발송 서비스를 개발중에 있는데, 기존 DB와 신규 서비스의 DB 구조가 달라 호환을 위해 완료된 데이터를 기존 DB에도 입력하는 기능을 구현했다. 신규 DB에서 완료된 조건에 일치하는 데이터만 Where() 함수를 통해 가져와서 기존 DB에 Insert하는 작업인데, 조건에 부합되는 항목들을 Insert 하려니 "발송대기" 상태인 초기값으로 나온다. Worker Service Task 를 여러 개 사용하는 구조인데, Task는 각각 역할이 정해져있으며, ConcurrentQueue를 통해 데이터를 단방향으로 처리하기 때문에 스레드에 의한 데이터 불일치 현상이 일어나는 구조는 아니다. 설명이 어려우니 재현을 위해 소스코드를 준비해보겠다. .NET..
-
[Visual Studio] 1. Docker 기반 .NET 개발환경 쉽게 구축하기 - HelloWorld.NET/개발환경 및 Tools 2021. 2. 24. 00:19
Docker 를 이용한 개발환경 구축 포스트를 검색해보니, 대개 명령어를 입력해서 구축하는 환경이 많이 검색되었다. 그게 나쁜건 아니지만, 화면을 조작하는 대화상자식 설정이 외우기 쉬운건 사실이다. 따라서 이번엔 명령어가 없거나, 최소한의 명령어만으로 Docker 기반 개발환경을 구축하는 포스트를 작성해보도록 하겠다. 자주 사용할 법한 환경구축 유형을 작성할 예정이라 포스트가 여러개 작성될 예정이다. 따라서 번호에 따라오는 것을 추천한다. 사전작업으로 Windows WSL2 기반 Docker 환경 구축이 필요하다. 아직 도커를 설치하지 않았다면, 아래 링크를 통해 설치과정을 진행할 수 있다. ddochea.tistory.com/107 [Docker] Windows 10 환경에서 Docker 개발환경 구축..
-
[EntityFramework Core] Worker 서비스에 DBContext DI 설정에 의한 System.AggregateException 오류 발생시 처리.NET/개념 및 유용한 팁 2021. 2. 18. 22:38
Worker 서비스 개발 중 아래와 같은 오류를 접하였다. System.AggregateException: 'Error while validating the service descript(Error while validating the service descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: Cannot consume scoped service ASP.NET Core에선 나오지 않았던 오류인데 대충 해석하면 Singleton lifecycle 기반으로 동작하는 BackgroundService Worker에 Scoped 으로 설정된 서비스는 의존성 주입(D..
-
[EntityFramework Core] The database provider attempted to register an implementation of the 'IRelationalTypeMappingSource' service 오류가 나올때 확인사항.NET/개념 및 유용한 팁 2021. 2. 18. 21:40
현재 개발중인 닷넷 코어기반 Worker 서비스에서 MySQL을 이용하기위해 EntityFrameworkCore + Pomelo.EntityFramework.MySql 조합으로 Nuget 패키지를 구성했다. EFCorePowerTools를 이용해서 자동 생성해서 구축했기 때문에 큰 문제가 없을 줄 알았는데, 아래와 같은 오류가 표시되었다. Could not load file or assembly 'Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 지정된 파일을 찾을 수 없습니다. dll을 찾을 수 없다는 오류였기 때문에 Nuget 패키지에서 해당 DLL을 찾아 설치했다. 그랬더니..
-
[Visual Studio] 에서 EntityFramework Core를 쉽게 쓸 수 있는 유용한 툴 (EFCorePowerTools)ETC 2021. 2. 17. 20:41
.NET Framework 프로젝트와 달리, .NET Core 및 .NET에선 Visual Studio의 Entity Framework 모델 생성 메뉴가 존재하지 않는다. (어쩌면 차기버전에선 생길 지도 모른다) 어쩔 수 없이 cmd 명령어를 이용해서 DB 테이블을 모델화시켜야하나 싶던 중 Youtube의 공식 dotNET 채널에서 EFCorePowerTools를 소개해주어 설치하게 되었다. www.youtube.com/watch?v=uph-AGyOd8c&t=1s 설치는 아래 링크에서 확인가능하다. marketplace.visualstudio.com/items?itemName=ErikEJ.EFCorePowerTools EF Core Power Tools - Visual Studio Marketplace ..
-
[.NET] 상업 목적에서도 무료로 사용할 수 있는 엑셀(Excel) 편집 라이브러리 ClosedXML 소개. (feat. EPPlus 사용시 주의사항).NET/유용한 라이브러리 2021. 1. 28. 23:23
.NET에서 엑셀을 다룰 때 주로 어떤 라이브러리를 쓰는가? Interop? EPPlus? Interop은 과거에 설정에 애먹었던 기억이 있으며, Excel이 설치되어있는 환경에서만 사용가능했던 것으로 기억하고 있다. (옛날 기억이다. 지금은 잘 모르겠다.) EPPlus는 훌륭한 라이브러리이지만 비상업목적으로 사용했을때만 무료이다. 상업적 목적으로 사용하려면 돈 내고 라이선스를 사도록 하자. 비용은 2021.01 기준 연간 1인당 최대 299 USD 라고 한다. (만약 사용중인 EPPlus가 4버전 이하이고, 해당 라이브러리를 직접 수정한 것이 아닌, 원본소스를 이용했다면 LGPL 라이선스 정책에 따라 고소는 면할 수 있다. 그런데 EPPlus를 자체적으로 수정했다면 소스코드에 대한 공개의무가 있다.) ..