본문 바로가기
[.net] nullable reference types 관련 경고 처리 .NET 8.0으로 신규 프로젝트 개발중인데, string 변수만 쓰면 위에처럼 자꾸 표시되서 이게 갑자기 왜 뜨지? 라고 생각했었다. ( 이전엔 .NET Framework 로만 개발했었음) 찾아보니까  .NET Core 3.0부터 nullable reference types이 도입되었고, 그래서 string?처럼 nullable 표시를 하지 않으면 컴파일러가 경고를 낸다고 하였다.  이를 관리하려면 프로젝트 파일에 enable 또는 disable를 설정을 하면nullable reference types 기능을 활성화하거나 비활성화할 수 있다.   .NET 6, 이전에는 enable이 없어서 직접 추가했어야 했는데, 이후에는 projects에 이 속성이 포함이라  .csproj 파일을 열고 disable.. 2024. 7. 9.
AddDbContextPool 과 AddPooledDbContextFactory - AddDbContextPool 과 AddPooledDbContextFactory 는 모두 Entity Framework Core에서 DbContext 인스턴스를 풀링(pooling)하여 성능을 최적화 하는데 사용.  그러나 이 둘은 약간의 차이가 있음  1. AddDbContextPool역할: AddDbContextPool은 DbContext 인스턴스를 풀링하여 재사용합니다.이는 주로 단일 인스턴스의 수명이 요청(request) 당 한 번인 웹 애플리케이션 시나리오에 적합합니다.사용법: DbContext를 애플리케이션 서비스로 등록하여 풀링을 활성화합니다.구현 예:services.AddDbContextPool(options => options.UserMySql("YourConnectionStri.. 2024. 7. 1.
[EntityFramework] DbContext 풀링 - 컨텍스트 풀링을 사용하면 컨텍스트 설정 비용을 지속적으로 지불하지 않고 프로그램 시작 시 한 번만 지불하면 됨. - 컨텍스트 풀링은 데이터베이스 드라이버에서 하위 수준에서 관리되는 데이터베이스 연결 풀링과 직교한다는 점에 유의 ▶ 종속성 주입builder.Services.AddDbContextPool( o => o.UseSqlServer(builder.Configuration.GetConnectionString("WeatherForecastContext")));  ▶ 종속성 주입없이 var options = new DbContextOptionsBuilder() .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_C.. 2024. 7. 1.
[C#] Helper, Provider, Service, Manager 네이밍 관련 정리 💡 개요 - 프로그래밍 하다보면 이름 짓는게 여간 어려운게 아님.- 이름을 잘 지어야 기능별 분리도 잘되고 나중에 유지보수 하기도 쉬움- 가독성도 높아짐  그래서 정리함 1. Helper 사용 시점 :Utility 기능: 주로 작은 단위의 유틸리티 함수들을 모아놓은 클래스.독립적 기능: 다른 클래스와 독립적으로 동작하며 특정 기능을 보조.특징 :Stateless: 상태를 가지지 않으며 메서드가 독립적으로 동작.Static Methods: 보통 정적 메서드로 구성되어 객체 인스턴스 생성 없이 사용 가능.예제 :public static class TimeHelper{ public static string ToString(DateTime dateTime) { return dateTime.ToString.. 2024. 6. 25.
싱글톤을 구현하는 2가지 방법 - Lazy Initialization (지연 초기화), Static Initialization (정적 초기화) 코드 보다보니까 어떤 사람은 싱글톤을 Lazy Initialization (지연초기화), Static Initialization (정적 초기화)로 나눠서 하니까 두개의 차이가 뭐가 있나 궁금해서 찾아보았다. 1. Lazy Initialization (지연초기화) ◈ 특징 - 인스턴스가 실제로 필요할 때까지 초기화를 미룸. - 처음 접근할 때 인스턴스를 생성하므로 메모리를 효율적으로 사용할 수 있음.- Lazy 클래스나 double-checked locking 등을 사용하여 구현할 수 있음.- 초기화 순서와 타이밍을 명확하게 제어할 수 있음.   ◈ 장점 1. 메모리 효율성 : 인스턴스를 실제로 필요할 때 까지 생성하지 않으므로 불필요한 메모리 사용을 방지함.2. 초기화 제어 : 클래스가 로드 될 때가 아.. 2024. 6. 21.
-1을 uint에 넣어서 형변환을 하면 어떻게 될까? 아래와 같은 코드가 있다.  int testA = -1; var testB = (uint)testA; 이때 testB는 뭐가 될까?? uint니까 1이될까??  땡이다. 위의 코드에 로그를 달아 찍어보자.   int testA = -1; var testB = (uint)testA; Console.WriteLine("testA : " + testA); Console.WriteLine("testB : " + testB + ", uint max =" + uint.MaxValue +", if(testB == uint.maxValue)" + (testB == uint.MaxValue)); 흥미롭게도 testB는 예상외의 숫자가 되었다.  4294967295가 의미하는건 뭘까? 바로 uint.maxvalue 값이다.. 2024. 5. 7.