'SQL Server 및 Windows 인증 모드'를 활성화하는 방법을 알아봅시다. 1. 에러의 발견 MSSQL에 로그인하려는데 다음과 같은 에러가 발생했습니다. exception code = '0xe0434352'. First 30KB characters of captured stdout and stderr logs: Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): 사용자 '[MSSQL 로그인 계정]'이(가) 로그인하지 못했습니다. ***** 진짜 에러 내용 ***** 사용자 '[MSSQL 로그인 계정]'이(가) 로그인하지 못했습니다. 이유: SQL 인증을 사용하여 로그인하지 못했습니다. 서버가 통합 인증만 사용하도록 구..
EF(Entity Framework)에서 FK(foreign key)를 걸면 자동으로 List 타입을 관리해줍니다. FK가 개발 중에는 좋은데 서비스 중에는 좀 단점이 있고(특정 데이터를 수동으로 지우려면 연결된 FK를 순서대로 뒤에서부터 지워야 함.) 자동으로 바인딩 되다 보니 무분별하게 난발하게 돼서 속도를 다 까먹는 문제가 있습니다. (잘 관리하면 좋긴 합니다. ㅎㅎㅎ) EF는 FK로 묶인 데이터에 접근하면 인덱스로 전체 선택(select)해서 처리하기 때문입니다. ㅎㄷㄷ 그래서 저는 가급적 FK를 안 쓰고 수동으로 선택(select)해서 사용하는 방법을 사용합니다. 그러다 보니 EF에서 리스트형 데이터들은 어떻게 처리되는지 궁금해졌습니다. 1. 배열과 리스트 모델을 아래와 같이 선언하고 마이그레이..
엔티티 프레임워크 같은 프레임워크를 객체 관계형 매핑(Object–relational mapping), 줄여서 ORM이라고 부릅니다. 이런 프레임워크의 장점 중 하나가 약간의 작업만 하면 다양한 DB를 연결할 수 있다는 것입니다. 이 포스팅에서는 'SQLite'와 'MSSQL'를 따로따로 마이그레이션하고 사용하겠습니다. 다른 DB도 얼마든지 추가할 수 있습니다. 연관글 영역 0. 프로젝트 생성 DB 테이블 모델과 컨텍스트(DbContext)를 관리할 프로젝트를 생성합니다. 여기에서 마이그레이션 버전관리가 이루어집니다. '클래스 라이브러리'로 프로젝트를 생성합니다. (프로젝트 이름 : EfMultiMigrations) 누겟에서 아래 종속성을 찾아 설치합니다. Microsoft.EntityFrameworkC..
이전 포스팅에서는 하나의 DB에 여러 컨텍스트를 사용하기 위해 각각 마이그레이션을 생성해서 관리하는 방법을 사용했습니다. 이 방법은 여러 개의 마이그레이션을 관리해야 해서 불편함이 많습니다. 그래서 전체를 관리하는 컨텍스트를 만들고 마이그레이션과 조인이 필요할 때는 이 '전체 컨텍스트'를 따로 만들어 사용하는 것이 좋습니다. 연관글 영역 0. 방법 이 방법의 단점은 전체용 컨텍스트를 따로 관리해야 한다는 것인데..... 관리와 성능의 이점을 생각하면 이 정도는 단점이라고 할수 없죠 ㅎㅎㅎㅎ 결국 마이그레이션만 따로 관리할 뿐 컨택스트를 하나만 쓰는 것과 다름없는 구조가 됩니다. 기본 세팅 이전 포스팅에서 (참고 : [Entity Framework 6] 하나의 DB에 여러 컨텍스트(Multiple DbCo..
프로젝트를 진행하다 보면 여러 가지 이유로 컨텍스트(Context)를 분리해서 관리할 필요가 있죠. 권장은 하나의 DB에 하나의 컨텍스트를 사용하는 것이지만 하나의 DB에 여러 컨텍스트를 사용하는 것도 가능합니다. 여러 컨텍스트를 조인하게 되면 성능이 확 떨어지고 조건에 따라서 마이그레이션 명령이 안 먹힐 수 있습니다. 그래서 하나의 컨텍스트를 사용하는 것을 권장하는 것입니다. 이 포스팅에서는 하나의 DB에 여러 컨텍스트를 사용하는 방법에 대해 알아봅시다. 연관글 영역 0. 프로젝트 생성 및 기본 세팅 이 포스팅에서는 'SQLite'를 사용할 예정입니다. (다른 DBMS도 동일합니다.) 프로젝트를 생성하고 누겟(Nuget)에서 다음 종속성을 찾아 추가합니다. - Microsoft.EntityFramewo..
엔트리 프레임웍(Entity Framework)에서 Mysql의 'longtext'필드에 인서트 할 때 발생하는 오류입니다. 필드 [필드명] 최대 길이가 '65535'인 문자열 또는 배열 형식이어야 합니다. 1. 원인 엔트리 프래임웍에서 string로 지정된 컬럼을 'Mysql'에서 'varchar' 취급을 해서 발생하는 문제입니다. 'varchar'는 최대크기가 '65535'인데 'longtext'는 크기가 '16777215'라 '65535'보다 큰 데이터를 넣으면 이 오류가 발생합니다. 마침 버그리포트에 같은 내용이 있네요. 참고 : bugs.mysql.com - Wrong handling of fixed length string columns by Entity Framework provider 버..
엔트리 프레임웍(Entity Framework)에서 Mysql에 'Insert'시 기본 키(primary key, PK)와 외래 키(foreign key, FK)가 한 컬럼에 걸려있을 경우 발생하는 오류 입니다. ERROR MESSAGE : ReferentialConstraint의 종속 속성이 저장소 생성 열에 매핑됩니다. 열: '[컬럼 이름]'. 1. 해결 방법 해당 컬럼의 'StoreGeneratedPattern'속성을 'None'로 바꿔주면 됩니다. '.edmx'를 생성하였으면 UI에서도 수정은 가능한데..... UI에서 수정한 내용은 적용이 되질 않습니다 -_-;;; 2. XML 편집기 이용 XML로 접근하여 변경해주어야 합니다. '.edmx'파일에서 오른쪽 클릭 > 다른 프로그램 연결 > XML..
'MySQL Workbench'을 사용하여 MySQL에 접속하여 작업하고 있습니다. 테이블을 업데이트를 하려고 명령을 날리니.... "You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect." 이런 오류가.... 1. 원인 이건 디비의 문제가 아니라 툴 자체의 문제입니다. 툴에서 디비를 보호하기 위해 편집을 막는 경우가 있는데 이런 경우라고 할 수 있습니다. 2. 해결 방법 옵션을 꺼주면 됩니다. 끝! ... .... 해당 옵션은 E..
.NET Core에서 'Entity Framework(엔트리 프레임워크)'를 사용하려면 코어용 엔트리 프레임워크가 필요합니다. .NET Core + MySql + Entity Framework 이렇게 사용하려면 'MySQL.Data.EntityFrameworkCore'를 참조해야 합니다. (참고 : nuget - MySql.Data.EntityFrameworkCore (2017-06-14기준 최신 버전 7.0.7-m61 ) ) 그런데 모델을 생성하고 테이블을 업데이트하니 이런에러가 납니다. "The entity type '[Table Name]' requires a primary key to be defined" 원인 내용만 보면 기본키가 지정되지 않아서 나는 것 같습니다. 하지만 이 테이블에는 기본키가..
DB에 있는 데이터를 모두 옮기는 것이 아니라 일부 데이터만 옮겨야 할 때 쓸 방법의 하나가 'BCP'를 이용하는 방법입니다. ( 참고 : bcp 유틸리티 ) 윈도우 인증만 되어있다면 콘솔 창 열고 명령어만 날려주시면 됩니다. 1. 'Select' 하여 내보내기 여기에는 전체를 내보낼 수도 있겠지만 우리는 원하는 결과만 잘라서 내보내겠습니다. 예를 들면 콘솔에 다음과 같이 넣습니다. bcp "SELECT * FROM TestDB.dbo.tb_BigData1 where nIndex > 10 And nIndex < 50" queryout d:\Contacts.txt -c -T TestDB : 데이터베이스명 Tb_BigData1 : 테이블명 이제 'D'드라이브로 가시면 'Contacts.txt'라는 파일이 생..