l 결론
VS2017&2019 + .NET Framework 4.6.1(4.7.1도 가능) + Entity
Framework 6.2.0 + Npgsql 4.0.7의 조합으로 PostgreSQL 9.6 서버에 접속 후、Entity Data Model의 위자드를 사용하여 기존에 있던 데이터베이스를 참조해서 edmx 모델을 생성하는데 성공함. NuGet 패키지메니저를 사용해서 필요한 라이브러리를 참조추가 & NpgSQL의 vsix 패키지를 이용해서 ADO.NET의 Entity Data Model에 Provider 항목에 PostgreSQL을 추가하면 사용가능함. 모델클래스와 소스코드의 편집과 수정에 대한 확인은 하지 않았음.
l 테스트 환경(전부 일본어 환경임..ㅠㅠ)
Ø Visual Studio 2019&.NET Framework 4.6.1
Ø Entity Framework 6.2.0&Entity Framework for Npgsql 3.2.1.1
Ø PostgreSQL 9.6+pgAdmin 3
l 작업순서 및 내용
① 솔루션탐색기의 프로젝트명에서 오른쪽 클릭 후, 서브메뉴에서 「追加」⇒「新しい項目」를 선택한다.
② 새로운 항목추가 화면에서 아이템리스트에서 「データ」를 선택 후, 항목리스트에서 「ADO.NET Entity Data Model」을 선택한 후 이름을 입력하고 「追加」버튼을 클릭한다.
③ Entity Data Model 위자드(한국어판은 마법사??)가 표시되면 「データベースからEF Designer」를 선택하고 「次へ」버튼을 클릭한다.
④ 데이터접속선택화면이 표시된다. 「新しい接続」버튼을 선택한다.
⑤ 데이터소스 선택화면에서 항목리스트에 있는 「その他」를 선택한 후 「続行」버튼을 클릭한다. 경우에 따라서는 추가로 라이브러리를 설치해야 하는 경우가 있다. 아래의 ⑥-⑨번 항목은 추가 라이브러리를 필요로 하는 경우를 가정하서 설명한다. 만약에 필요없는 경우라면 ⑩번 항목으로 바로 넘어가도 무방함.
⑥ VS를 일단 종료한 후, VS의 확장기능을 추가한다. 아래의 링크로부터 Npgsql v4.0.7용 vsix(VS기능확장파일)파일을 다운로드한 후, 더블클릭해서 실행한다. 옵션에서 사용중인 Visual Studio 를 선택하면 자동으로 인스톨 된다.
*visx 파일은 공식적으로 2017까지 지원、2019에 대한 호환성은 아직 불명확한듯??
https://github.com/npgsql/npgsql/releases
⑦ VS을 재기동하고 솔루션탐색기에서 프로젝트명을 오른쪽 클릭 후, 「追加」⇒「新しい項目」을 선택하면 추가화면이 표시된다. Visual C# 아이템리스트에서 데이터를 선택하고 「ADO.NET Entity Data Model」항목을 다시 선택하고 이름을 입력한 후 「追加」버튼을 누른다.
⑧ Entity Data Model 마법사가 표시되면、「データベースからEF Designer」를 선택한 후 「次へ」버튼을 클릭한다.
⑨ 데이터접속선택 화면에서「新しい接続」버튼을 클릭 후, 데이터베이서 선택화면에서 「PostgreSQL Database」을 선택, 「続行」버튼을 누른다.
⑩ 접속 프로퍼티에 서버의 접속정보를 입력하고 「OK」버튼을 클릭한다.
⑪ 접속문자열이 자동으로 생성되며 접속준비상태가 된다. 필요에 따라서 옵션을 선택한 후 「次へ」버튼을 클릭한다.
⑫ 데이터베이스객체 및 설정선택 화면이 표시된다. 필요한 객체나 옵션을 선택한 후 「完了」버튼을 클릭한다.
⑬
솔루션탐색기에 「설정한 이름.edmx」 파일이 자동으로 생성되며 데이터모델다이어그램이 표시된다.
l 고찰 및 메모
작성은 했는데 결국 db의 함수에서 에러가 나거나, 자동생성 소스를 수정하면 헬...ㅠㅠ
일본어이긴 한데, 위자드 없이 코딩으로 하는 방법도 있음. 해 봤는데 성공은 했으나...
사용법을 아직 잘 몰라서 문제임.
l 참고링크
2019/12/16 일 작성
답글삭제코드퍼스트(code-first) 로 자동작성하는 방법. 포스팅 하려고 했는데 열도 나고 귀찮아서...ㅠ
방법은 간단함.
우선 DB에 테이블 등 셋팅한 후, 위와 동일하게 진행하지만 ③단계에서 맨 오른쪽의 코드퍼스트 항목을 선택하면 됨, 다른 것은 위와 동일함.
생성하면 각 테이블 별로 모델이 자동생성되고, 그걸 통합관리하는 모델이 생성됨.
생성된 모델을 가지고 DB 작업을 진행하면 되는 듯.
비슷한 내용의 포스팅은 아래 링크 참조, EF6 및 LINQ 사용법은 추후 정리하자..상태가 메롱 ㅠ
https://www.ipentec.com/document/csharp-entity-framework-create-entity-data-model-coce-first