.NET
-
[EF Core] 여러 프로젝트가 참조된 솔루션에서 dotnet ef 명령어 사용시 유의사항정리.NET/개념 및 유용한 팁 2021. 8. 31. 22:22
CleanArchitecture까진 필요없고, 단일 프로젝트 형식은 테스트 케이스 개발에 불편함이 있어 별도 프로젝트 템플릿을 구현하고 있다. 구현하면서 Entity Framework Core를 이용해 Code First 방식으로 DB를 마이그레이션 하는 방법을 다루게 되었는데 뻘짓을 많이 하여 리스트로 정리할겸 포스트를 쓴다. 1. 시작프로젝트에 Microsoft.EntityFrameworkCore.Tools Nuget 패키지가 설치되어 있어야 한다. 설치가 안되어있을 경우, 아래와 같은 오류가 나온다. Your startup project 'Template.WebApi' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is r..
-
[Viusal Studio] xUnit 간편하게 사용할 수 있는 확장 xUnit.net.TestGenerator.NET/개발환경 및 Tools 2021. 8. 22. 14:49
xUnit 도 MSTest 처럼 컨텍스트 메뉴에서 테스트 프로젝트를 자동생성하려면 xUnit.net.TestGenerator를 설치해야 한다. https://marketplace.visualstudio.com/items?itemName=YowkoTsai.xUnitnetTestGenerator xUnit.net.TestGenerator - Visual Studio Marketplace Extension for Visual Studio - xUnit.net Test Generator extensions for Visual Studio 2017 and Visual Studio 2019. Creates Unit tests with xUnit.net 2.0 framework. Works on Visual Stud..
-
[.NET] Dependency Injection(DI)를 쓰는 이유.NET/개념 및 유용한 팁 2021. 8. 7. 12:46
ASP.NET Core는 기본적으로 DI가 적용된 구조로 생성된다. 그런데 왜 DI 가 적용되어있을까? 인터넷에서 보면 다음과 같은 이유로 DI가 좋다고 되어있다. 코드의 재사용성을 높인다. 결합도를 낮춘다. 여러 블로그글을 보면 위 내용들이 많다. 그런데 왜 재사용성이 높아지고, 결합도가 낮아지는 건지 와닿진 않는다. 그리고 굳이 DI를 써야하나라는 의구심이 들기도 한다. 솔직히 필자도 DI 가 좋은 이유에 대해 제대로 설명해보라고하면 못할 듯 싶다. 그래서 아래 간단한 실습을 통해 DI가 어떻게 동작하며, 왜 좋은지 포스트로 남겨보고자 한다. 1. 프로젝트 생성 "WhyUseDI" 라는 이름의 솔루션을 생성하고, "WhyUseDI.API" webapi 와 "Services" classlib 프로젝트를..
-
[ASP.NET Core] AddController(), AddMvc(), AddControllersWithViews(), AddRazorPages() 차이점.NET/ASP.NET Core 2021. 6. 26. 11:33
ASP.NET Core에서 MVC 템플릿으로 프로젝트를 생성하면 Startup 클래스의 ConfigureServices 메소드에서AddControllersWithViews()를 확인할 수 있다. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); } 함수 이름으로 유추해봐도 알 수 있듯이, MVC 모델의 Controller와 View를 ASP.NET Core에서 사용하겠다는 뜻을 의미한다. 그런데 AddControllersWithViews 가 아닌, AddMVC를 사용해도 문제없이 동작하는 것을 확인할 수 있다. 이 메소드들은 공통적으로 MvcServiceCollectionExtens..
-
[.NET Tools] 웹 기반 dotnet playground 서비스 sharplab.io.NET/유용한 라이브러리 2021. 6. 5. 19:05
https://sharplab.io/ SharpLab Code [connection lost, reconnecting…] sharplab.io 웹에서 .NET 기반 소스코드를 작성하고 결과를 바로바로 확인할 수 있는 웹 서비스이다. 코드를 작성하여 단순 결과를 보는 것 뿐만 아니라 Debug, Release시 최적화되는 소스코드 및 중간언어(IL)로 변환되었을때 어떻게 되는지 확인할 수 있다. 기존에 Visual Studio 에선 해당 소스코드가 boxing과 같이 성능저하 문제가 발생할만한 요소가 있는지 확인하기위해 visual studio 와 함께 설치되는 Ildasm.exe 도구를 써서 확인해야하는 수고로움이 있었다. SharpLab에선 바로바로 확인이 가능하다. 코드를 작성하면 URL에 파라메터가..
-
[.NET] IEnumable에 대한 성능팁.NET/개념 및 유용한 팁 2021. 6. 5. 16:31
매일 수신받는 medium 에서 IEnumable에 대한 유용한 글을 수신받았다. 번역기가 있어 어느정도 이해할 순 있지만 내용이 좀 길어 짧게 정리할 겸 포스트를 쓴다. 1. Count() != 0 보단 Any()를 써라 종종 배열(IEnumable)에 요소가 있는지 여부를 사용할 때, Count() != 0 조건을 사용하는 경우가 많다. 그러나 Count()는 각 요소의 개수를 구하기 위해 아래와 같은 구현으로 동작한다. public static int Count(this IEnumerable enumerable) { var count = 0; using(var enumerator = enumerable.GetEnumerator()) { while (enumerator.MoveNext()) count..
-
[EntityFramework Core] 간단히 알아본 Insert & Update 퍼포먼스 성능비교.NET/개념 및 유용한 팁 2021. 5. 30. 21:48
EntityFramework Core는 Microsoft에서 관리하는 오픈소스 ORM 라이브러리이다. ORM이 없기 전, 과거(라곤 하지만 현재도 유지되고 있다.)에는 쿼리 문자열을 작성하여 조회한 뒤, DataTable로 결과를 받아 처리하는 방식을 사용했었다. 모든 결과를 DataTable로 받기 때문에, 로직이 조금만 복잡해져도, 해당 DataTable이 가리키는 테이블이 무엇이고 어떤 필드가 어떤 유형(type)인지 제대로 파악하기 어려웠었다. EntityFramework 는 시스템이 사용할 테이블을 클래스(Class) 모델로 생성하고, 모델 객체를 통해 데이터를 조작하기 때문에 소스로직이 복잡해지더라도 클래스유형을 통해 분석이 용이하다는 장점이 있다. 근데 써본사람들은 알겠지만, SQL쿼리보다 ..