모델에 FK(foreign key)를 연결하려고 상호 참조를 했더니 다음과 같은 에러가 납니다. Exception: Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property '[모델명]' with type '[네임스페이스]'. Path '[에러나 개체]'. at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference(JsonWriter writer, Object value, JsonProperty property, JsonContract contract, JsonContainerContract container..
EF(Entity Framework, 엔트리 프레임워크)에서 데이터의 무결성을 확보하기 위해 '낙관적 동시성(Optimistic Concurrency)'을 어떻게 구현하는지 알아봅시다. 0. 낙관적 동시성을 쓰는 이유 낙관적 동시성을 쓰는 이유를 알려면 알아두어야 할 내용이 있습니다. 0-1. 비관적 동시성 DB에서 데이터의 일관성유지를 위해 락(lock)을 거는 방법이 있습니다. 이렇게 락을 거는 방법을 '비관적 동시성(Pessimisitc Concurrency)'이라고 합니다. 이 방법은 누군가 데이터를 수정하는 동안 다른 사람은 수정할 수 없게 만드는 방법입니다. 다른 사람이 수정할 수 없으니 절대적인 데이터 무결성이 보장된다는 장점이 있습니다. 하지만 동시에 여러 사람이 수정하려는 경우 나머지 사..
포스트그래SQL(PostgreSQL)에서 물리적인 저장위치를 지정하려면 크게 2가지 방법이 있습니다. 포스트그래SQL이 사용하는 기본 저장 폴더를 변경하거나 (참고 : [PostgreSQL] 윈도우(Windows)에서 기본 데이터 폴더 변경 ) 테이블스페이스(Tablespaces)를 생성하여 지정해야 합니다. 이 포스팅에서는 'pgAdmin'을 이용하여 테이블스페이스를 만들고 지정해 보겠습니다. 1. 테이블스페이스(Tablespaces) 생성하기 개체 탐색기(Object Explorer)에서 테이블스페이스 트리를 찾습니다. 오른쪽 클릭 > Create > Tablespace... 을 선택합니다. 생성할 이름(Name)을 넣고 Definition > Location 에 물리 경로를 적어줍니다. 생성된 테이..
'JsonIgnore'속성은 JSON으로 출력할 때 무시하게 해주는 속성입니다. 해당 속성으로 지정되어 있으면 JSON으로 출력할 때 해당 필드가 없어야 합니다. 그런데 이 속성이 제대로 적용이 될 때가 있고 안될 때가 있는 겁니다...????? 1. 원인을 찾아서~ 원인은 의외로 간단한데...... 'JsonIgnore'은 두 군데에 선언이 되어 있습니다. System.Text.Json.Serialization Newtonsoft.Json 만약 자신이 'System.Text.Json.Serialization'를 사용 중인데 'Newtonsoft.Json.JsonIgnore'를 사용한다거나 반대로 ''Newtonsoft.Json'을 사용 중인데 'System.Text.Json.Serialization'를..
1. 증상 포스트그레SQL(PostgreSQL)을 설치하고 접속했는데 에러가 납니다. 그런데 메시지 깨져서 무슨 소리인지 모르겠습니다. 분명 언어 설정과 같은 문제일 텐데 DB의 언어설정을 아무리 수정해도 바뀌지가 않습니다. 2. 해결 방법 생성한 DB의 설정을 바꾸는 게 아니라 설치된 포스트그래SQL의 설정을 바꿔야 합니다. 포스트그래SQL이 설치된 폴더의 '[버전 번호]\data\postgresql.conf' 파일을 열어줍니다. (예> D:\Program Files\PostgreSQL\15\data ) 'lc_messages'를 'C'로 바꿔줍니다. 이제 포스트그래SQL의 서비스를 다시 시작해 줍니다. 마무리 이게 한국어가 없어서 깨지는 걸까요? 있는데 인코딩 문제일까요? 저는 모르겠습니다 ㅎㅎㅎㅎ ..
'PostgreSQL'설치하고 기본 생성돼 있는 데이터 폴더를 변경하고 싶었습니다. 1. 파일 수정은 의미가 없다. 다른 운영체제의 경우 'postmaster.opts'의 내용을 변경해 주면 된다는데.... 윈도우는 아닙니다. 2. 진짜는 서비스에 있다. 'PostgreSQL' 서비스를 확인해 보면 실행 매개변수에 '-D'옵션이 있는 것을 알 수 있습니다. 3. 서비스 내용 변경 서비스 경로는 직접 바꿀 수 없으므로 레지스트를 수정해야 합니다. 레지스트리 편집기를 실행합니다.(regedit) 경로는 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\postgresql-x64-15 입니다. 항목 중에 'ImagePath'를 수정하면 됩니다. 이제 기존 '..
각각은 있어도 이렇게 조합된 걸 찾지 못한 데다가 간단한 채팅 샘플이 있었으면 해서 만들었습니다. 완성된 프로젝트 : github - dang-gun/AspDotNetSamples/SignalRWebpack/ 0. 프로젝트 생성 프로젝트 구성은 다음과 같습니다 ASP.NET Core 6.0 Webpack 5.76 TypeScript 4.9.5 'ASP.NET Core 6.0 웹 API' 프로젝트를 생성합니다. 프론트 엔드는 'ClientApp'폴더에 넣었습니다. 1. 백엔드 구현 따로 참조를 추가할 건 없습니다. 1-1. 유저 모델 및 유저 리스트 클라이언트를 관리하기 위한 목적의 유저리스트를 만들기 위한 모델입니다. 유저 모델 /// /// 유저 /// public class UserModel { //..
웹팩 개발서버에 로컬 인증서(SSL) 설정하는 방법을 몰라서 한참 고생을.... 정확하게는 로컬 인증서를 자동으로 생성하는 방법을 몰라서 고생한거긴 합니다. 문서를 좀더 잘읽었으면 삽질이 좀 줄긴 했을거 같은데 말이죠 ㅎㅎㅎㅎ 연관글 영역 1. 로컬 인증서 생성 'ASP.NET Core'의 'React'템플릿에 보면 다음과 같이 2개의 파일이 있습니다. (참고 : github - dang-gun/AspDotNetSamples/WebpackSslTest/ClientApp/OriginalFils/ ) aspnetcore-https.js : 로컬 인증서를 생성해 주는 파일 aspnetcore-react.js : 생성된 경로를 '.env.development.local'에 넣어주는 파일 이 파일들을 실행하면 로..
EF(Entity framework)를 사용하다 보면 가장 불편한 것이 정렬입니다. 앵? '.OrderBy', 'OrderByDescending' 하면 되는데요? 맞습니다. 문제는 일반적인 게시판의 정렬처럼 조건이 다양한 정렬의 경우 각각 오더바이(Orderby)를 따로 호출해야 한다는 것입니다. 1. 문제의 시작 아래는 일반적인 게시판을 정렬하기 위한 코드입니다. switch (sColumn) { case "idTestOrderBy": if(true == bAsc) { iqTO = iqTO.OrderBy(ob => ob.idTestOrderBy); } else { iqTO = iqTO.OrderByDescending(ob => ob.idTestOrderBy); } break; case "Str": if..
ARM 버전은 수동으로 설치해야 된다고 알고 있었는데....... 자동으로 잘만 설치됩니다. 당연히 오드로이드에서도 설치 잘됩니다. 주의해야 할 점은 우분투 소프트웨어 업데이트 설정에 따라 설치가 안 되거나 실행이 안 될 수 있습니다. 0. 설치전 확인 우분투에서 apt로 무언가 설치할 때는 설치하기 전에 가급적 업데이트를 해주는 것이 좋습니다. sudo apt update sudo apt upgrade 1. 표준 설치 Ubuntu 22.04에 .NET SDK 또는 .NET 런타임 설치 참고 : MS Learn - Ubuntu 22.04에 .NET SDK 또는 .NET 런타임 설치 SDK를 설치하는 경우 sudo apt-get update && \ sudo apt-get install -y dotnet-..