winUI 3프로젝트에서 Local DB 사용 법 질문 있습니다.

안녕하세요 .net c# 개발자 여러분…!
제가 win UI 3는 아예 처음이고, Win UI 3 자체가 기간이 오래되지 않아 자료도 얼마 없어서 찾다 찾다 여쭤봅니다 ㅜㅜ

Win UI 3를 이용하여 window에서 동작 가능한 프로그램을 만드려고 하는데, 인터넷이 없는 환경에서도 데이터를 저장하고 사용해야하는 프로그램을 만드려 합니다.
이 때, 데이터 처리량이 많아질 것 같아 처음부터 DB를 사용해야하고, 인터넷이 없는 환경을 위해 프로젝트 내에서 자체적으로 LocalDB를 구성하려 하고 있습니다.

여기서 질문이 있어요…
흔히 Local DB는 내 PC에 DB서버를 열어서 PC 안에서 SSMS로 동작 가능하고, 내 pc에서라면 자유롭게 CRUD가 가능한 걸로 알고 있습니다.

그렇다면 프로젝트 내에서 배포시(다른 PC에 ‘내프로젝트.exe’ 같은 설치 파일로 설치 하여 프로그램으로 window PC상에서 동작할 경우)에도 동작 가능한 DB를 만드려면, EntityFramework나 SQLlite 등을 이용하여 프로젝트 내부에 DB를 만들어서만 가능한가요…?
아니면 SSMS에서 로컬 DB 서버를 만들듯이 프로젝트 내에서 구현하여 설치 프로그램에 포함이 가능한가요…?
어떤 방식을 사용해야하고, 어떤식으로 해야하는지 잘 모르겠어서 질문 올립니다.

1 Like

MS Access 나 SQLite 등 로컬 DB의 DB파일도 같이 배포하고,
추가로 해당 DBMS에 처리 가능한 프로바이더를 같이 배포 하면
특별한 설치 없이 사용 가능 합니다.

DBMS 프로바이더는 MS Access를 사용한다면 기본적으로 닷넷프레임워크에 포함되어 있기에 별도로 필요치 않았던 기억이 있구요!

EF ORM / SQLite를 이용하시면 관련 파일만 같이 배포해 주시면 됩니다. 다른 로컬 DB를 사용해도 동일하구요

3 Likes

LocalDB (SQL Server)의 경우에는 개발 과정에서는 편하게 사용할 수 있지만, 실제로 다양한 클라이언트 환경에서 배포하고 테스트할 때는 설치나 관리가 까다로울 여지가 있습니다.

안정적이고 유연하게 소프트웨어를 배포하고자 하신다면 SQLite를 로컬 DB로 택하시는 것을 개인적으로는 더 추천드립니다. 또한 MS Access의 경우 Microsoft Jet ADO/OLE DB Provider가 필요할 수 있는데, 이 경우에도 비슷한 문제가 있을 수 있습니다.

이렇게 말씀드리는 이유는, PC 최적화를 명목으로 IT 관리자들부터 개인 사용자들에 이르기까지 응당 Windows 클라이언트 OS라면 갖추어야 할 기본 컴포넌트들을 무작위로 해체하거나 비활성화시키는 경우가 매우 많기 때문입니다. (덤으로 Win UI 역시 비슷한 이유로 실행을 막거나 관련된 컴포넌트를 통으로 제거하려는 경우가 있습니다.)

2 Likes

답변 감사합니다 @rkttu 님!!

그렇다면 프로젝트 내에서 nuGet 으로 SQLite를 설치하고 프로젝트 내에서 Local DB를 만들고, 관리하는 것이 더 안정적인 방법이겠네요!