이전 포스팅에서 여러 종류의 DB를 한 프로젝트에서 사용하기 위한 설명을 했습니다. 이 포스팅에서는 여러 DB를 관리하기 위해 제가 정리한 코드를 설명합니다. 연관글 영역 0. 테이블로 사용할 모델 테이블로 사용할 모델을 만들어 줍니다. 이 포스팅에서는 테스트 용도로 아래 모델을 선언했습니다. //Test1Model.cs /// /// 테스트용 모델 /// public class Test1Model { /// /// 고유키 /// [Key] public long idTest1Model { get; set; } /// /// 숫자형 /// public int Int { get; set; } /// /// 문자형 /// public string Str { get; set; } = string.Empty; /..
몇 가지 관리 이슈 때문에 저는 FK(ForeingKey)를 잘 활용을 하지 않았는데... 원래는 적극적으로 FK를 사용하는 것이 좋습니다. 일단 검색 속도가 빨라지는 큰 장점이 있기 때문입니다. 그리고 테이블 간 관계성이 명확해집니다. 0. 테스트 준비하기 이 포스트팅에 사용하는 모델 정보는 다음과 같습니다. (참고 : dang-gun/EntityFrameworkSample/ForeignKeyTest/ModelsDB ) ForeignKeyTest1_Blog.cs namespace ModelsDB; /// /// 테스트용 테이블 /// public class ForeignKeyTest1_Blog { /// /// 고유키 /// [Key] public long idTest1Blog { get; set; }..
로거의 특성상 자신에게 편한 설정이 끝나면 어떤 프로젝트든 거의 손대지 않고 그대로 갔다 쓰기 마련입니다. 매번 이런 코드를 복사 & 붙여 넣기 한다는 건 너무 번거로운 일이므로 유틸리티 클래스를 만들어서 관리하면 편합니다. 이 포스팅에서는 'NReco.Logging.File'를 이용하여 파일 출력을 하고 있습니다. 연관글 영역 1. 개요 이 유틸은 범용이라기보다는 프로젝트 전용 유틸입니다. 단지 특수한 경우가 아니라면 설정의 거의 동일할 것이라는 가정이라 이 클래스만 복사하여 프로젝트에 세팅하면 됩니다. (복사용 원본 : github - dang-gun/DotNetSamples/LoggingNReco_DotNetLogging/DotNetLogging_Copy.cs ) 기본 로거를 위한 유틸을 만들려면 ..
프론트엔드 단독 프로젝트를 구성하고 처음 실행하면 디버거가 잘 연결되어 중단점도 잘 잡힙니다. 그런데 포트만 변경하면 디버거를 연결하지 못하는 현상을 발견하였습니다. 접속도 되고 실행도 되지만 디버거가 연결되지 않아 중단점이 잡히지 않고 배포도 끝나지 않습니다. 1. 원인 전형적인 디버거가 연결되지 않는 현상입니다. 비주얼 스튜디오에서 자바스크립트를 디버깅하려면 디버깅 포트를 서비스 포트와 일치시켜줘야 합니다. ASP.NET Core 프로젝트와 같이 브라우저를 사용하는 프로젝트는 브라우저를 설정할 수 있는 인터페이스가 제공됩니다. (참고 : MS Learn - Visual Studio에서 JavaScript 또는 TypeScript 앱 디버그 - 디버그할 브라우저 준비 ) 수동으로 인수를 넣어 디버거에 ..
ASP.NET Core는 기본적으로 종속성 주입 패턴을 사용하고 있어서 따로 설정할게 없지만 WPF는 그렇지 않습니다. 만약 종속성주입이 귀찮다 하면 종속성 없이 사용해도 됩니다. 연관글 영역 1. 프로젝트 준비 WPF 프로젝트를 생성하고 종속성 주입 구현을 위해서 아래 패키지를 누겟(Nuget)에서 찾아 설치해 줍니다. Microsoft.Extensions.DependencyInjection 이 프로젝트에서는 콘솔출력도 사용할 예정이라 아래 패키지도 설치해 줍니다. Microsoft.Extensions.Hosting 로그파일 출력은 아래 패키지를 이용합니다. NReco.Logging.File 2. 종속성 주입 구현 'App.xaml'에서 'StartupUri'를 제거해 줍니다. 'App.xaml.cs'..
윈폼(WinForm)은 종속성 구현이 안 돼 있으므로 굳이 일부로 구현해 가며 로거를 쓰는 것은 너무 번거롭습니다. 그래서 이 포스팅은 종속성 없이 사용하는 방법을 다룹니다. 자세한 설정방법은 이전 포스팅을 확인해 주세요 연관글 영역 0. 라이브러리 설치 이 플랫폼에는 기본 로거가 설치되어있지 않으므로 누겟에서 찾아서 설치해 줍니다. Microsoft.Extensions.Hosting 1. 로거팩토리(LoggerFactory) 생성 간단하게 로거팩토리(LoggerFactory)를 생성하여 사용하는 것이 좋습니다. 전역에서 접근할 수 있도록 스태틱(static)으로 선언한 로거팩토리(LoggerFactory)변수를 만들어 줍니다. /// /// 로거 팩토리 /// public static ILoggerFa..
클래스 라이브러리를 만들어 'Microsoft.AspNetCore.Mvc'에 있는 'ControllerBase'를 사용하려면 누겟(NuGet)에서 'Microsoft.AspNetCore.Mvc'를 받으면 됩니다. 그래서 누겟을 봤더니..... 1. 'Microsoft.AspNetCore.Mvc'는 빠졌다! 하도 옛날에 만들어 놓고 복붙만 해서 쓰던 프로젝트라 '사용되지 않음'상태가 되어 있었는지 이제 알았네요. 2. 'Microsoft.AspNetCore.Mvc'는 어디 갔는가? 정확하게는 누겟에서만 빠지는 거고 SDK에는 들어 있기 때문에 쓰는 데 지장은 없습니다. 2-1. 프로젝트의 기준 SDK를 변경하여 해결하는 방법 프로젝트가 자체를 ASP.NET Core로 바꿔도 되는 경우라면 프로젝트 파일(*..
테스트를 편하게 하려고 'ASP.NET Core'프로젝트에 프론트엔드(Front-end)를 넣어놨더니 개시하면 프론트엔드도 같이 빌드됩니다. 그래서 개시할 때마다 시간이 너무 오래 걸립니다.... 프론트엔드는 따로 관리하는 것이 편하므로 빌드도 따로 하여 배포하는 게 편한데 이러면 너무 불편하죠. 연관글 영역 해결 방법 의외로 해결 방법은 복사/붙여넣기 했던 코드에 나와있는데..... 프로젝트를 더블클릭하고 'Target Name="PublishRunWebpack"'로 되어 있는 부분을 찾습니다. 이 부분이 퍼블리싱이 끝나면 동작하는 내용입니다. 이 부분을 주석 처리하면 프론트엔드는 퍼블리싱하지 않습니다. 다시 게시하기 주석처리가 됐으면 다시 게시해 봅시다. 이제 게시를 해도 프론트엔드는 빌드되지 않습니..
1. 에러의 발견 포스트그레스 사용 시 다음과 같은 에러가 나는 경우가 있습니다. System.InvalidCastException: ''timestamp with time zone' literal cannot be generated for Local DateTime: a UTC DateTime is required' 포스트그레스 프로바인더가 6.x 버전부터 시간대가 포함된 타임스템프(timestamp with timezone)로 매핑해야 한다고 합니다. 2. ' DbContext'에서 설정하기 간편하게 해결하는 방법은 'DbContext'를 생성할 때 레거시 모드를 설정해 주는 것입니다. public ModelsDbContext_Postgresql(DbContextOptions options) : ba..
전 포스팅에서 .NET기본 로거를 사용하는 방법을 알아봤습니다. 로거를 파일로 출력하려면 외부 라이브러리를 사용해야 합니다. 이 포스팅에서는 'NReco.Logging.File'를 이용하여 로그를 파일로 출력합니다. 연관글 영역 1. 라이브러리 설치 .NET에서 로그를 파일로 내보내는 기능은 외부 라이브러리를 쓰라고 되어 있습니다. (더 이상 기본기능으로 제공하지 않음) 이 포스팅에서는 'NReco.Logging.File'를 사용합니다. 2. 파일 출력 설정 파일 출력을 위해 파일명을 지정하고 로거빌더(LoggingBuilder)에서 출력 형식을 지정해 줍니다. 2-1. 'StartUp.cs'를 사용하지 않는 경우 서비스에서 'AddLogging'을 이용하여 외부 빌더를 설정해 줍니다. builder.S..