C #에서 LiteDB로 작업하는 방법

LiteDB는 빠르고 간단하며 구성이 필요없는 .Net 용 임베디드 NoSQL 데이터베이스입니다. 사용자 당 하나의 데이터 파일이 필요할 수 있지만 많은 동시 쓰기 작업을 지원할 필요가없는 간단한 애플리케이션 (웹, 모바일 또는 데스크톱)에 적합합니다. 이 문서에서는 C #을 사용하여이 데이터베이스로 작업하는 방법에 대한 개요를 제공합니다.

LiteDB를 사용하기 전에 몇 가지 개념을 살펴 보겠습니다. LiteDB는 문서 및 컬렉션과 함께 작동합니다. 문서는 데이터 파일에서 데이터를 저장하고 검색하는 데 사용됩니다. 문서 정의는 POCO 클래스 또는 BsonDocument 클래스 일 수 있습니다. 어느 쪽이든 LiteDB는 문서가 데이터베이스에 저장되기 전에 BSON 형식으로 변환합니다.

LiteDB는 컬렉션이라고하는 문서 저장소 내부의 문서를 구성합니다. 참고로 각 컬렉션은 고유 한 이름으로 식별되며 동일한 스키마를 공유하는 하나 이상의 문서를 포함합니다. 문서 작업을 위해 컬렉션 방법을 활용할 수 있습니다. 사용할 수있는 방법 목록은 다음과 같습니다.

  • Insert-컬렉션에 새 문서를 추가하는 데 사용됩니다.
  • Update— 기존 문서를 업데이트하는 데 사용
  • Delete— 문서를 삭제하는 데 사용
  • FindById또는 — Find문서 쿼리에 사용
  • Include-다른 컬렉션의 속성을 채우는 데 사용됩니다.
  • EnsureIndex— 존재하지 않는 경우 새 색인을 만드는 데 사용됩니다.

LiteDB는 서버가없는 데이터베이스이므로 시스템에 설치할 필요가 없습니다. 프로젝트의 LiteDB.dll 파일에 대한 참조를 추가하기 만하면됩니다. 또는 Visual Studio의 NuGet 패키지 관리자를 통해 또는 NuGet 패키지 관리자 명령 줄 도구에 다음 명령을 입력하여 LiteDB를 설치할 수 있습니다.

> Install-Package LiteDB

C #의 LiteDB에서 POCO 클래스 만들기

Visual Studio에서 새 콘솔 애플리케이션 프로젝트를 만들고 이름으로 저장합니다. 이제 강력한 형식의 문서를 만드는 데 사용할 POCO 클래스를 만들어 보겠습니다. IdLiteDB로 작업하려면 클래스에 명명 된 속성 이 있어야합니다 . 또는 속성을 사용하여 클래스의 모든 속성을 장식 할 수도 있습니다 [BsonId]. Author이 예제에서 사용할 클래스는 다음과 같습니다 .

공개 클래스 작성자

    {

        public int Id {get; 세트; }

        public string FirstName {get; 세트; }

        public string LastName {get; 세트; }

    }

Id속성은 독특하고 NOT NULL이어야한다. Id 속성을 비워두면 LiteDB는 Id레코드를 삽입 할 때 자동으로 생성합니다 .

C #에서 LiteDB에 레코드 삽입

다음 코드 조각은 새 Author인스턴스 를 만들고 레코드를 삽입하는 데 사용할 수 있습니다 .

(var db = new LiteDatabase (connectionString)) 사용

    {

       var collection = db.GetCollection ( "authors");

       var author = 새 작성자

         {

             이름,

             성,

             주소

          };

         collection.Insert (저자);

     }

위의 코드 스 니펫을 참조하십시오. LiteDatabase연결 문자열을 매개 변수로 전달하여 의 새 인스턴스를 만드는 방법에 유의하십시오 . 다음 문은 컬렉션을 검색하거나 존재하지 않는 경우 새 컬렉션을 만듭니다. Insert컬렉션 인스턴스 에서 메서드를 호출 하면 Id속성 값이 자동으로 생성 되고 문서가 데이터베이스에 삽입됩니다.

C #에서 LiteDB 쿼리

이제 데이터베이스에 새 레코드를 삽입 했으므로 아래 코드 조각과 같이 쿼리 할 수 ​​있습니다.

(var db = new LiteDatabase (connectionString)) 사용

   {

     var collection = db.GetCollection ( "authors");

     var author = collection.FindById (1);

     Console.WriteLine (author.FirstName +“\ t”+ author.LastName);

   }

FindById메서드는 해당 Id또는 기본 키 인덱스로 문서를 반환합니다 . EnsureIndex아래와 같은 방법을 사용하여 명시 적으로 인덱스를 생성 할 수 있습니다 .

authors.EnsureIndex ( "이름");

C #의 LiteDB에서 문서 업데이트

문서 업데이트는 간단합니다. 속성 값을 변경 한 다음 Update아래와 같이 컬렉션 인스턴스 에서 메서드 를 호출하기 만하면 됩니다.

var author = collection.FindById (1);

author.Address;

collection.Update (저자);

특정 위치에 사는 모든 저자를 찾으려면 다음 쿼리를 사용할 수 있습니다.

var results = collection.Find (x => x.Address.Contains ( "Hyderabad"));

LiteRepositoryCRUD 작업을 좀 더 쉽게 수행 할 수 있도록하는 또 다른 클래스가 있습니다 . 다음은이 클래스를 사용하는 방법을 보여주는 예입니다.

(var db = new LiteRepository (connectionString)) 사용

            {

                db.Insert (새 작성자

               {이름, 성,

               주소});

            }

LiteDB에서 파일 작업

LiteDB는 FileStorage파일 작업을위한 컬렉션을 제공 합니다. 파일 업로드 또는 다운로드는 간단합니다. FileStorage아래 코드 스 니펫에 표시된대로 컬렉션 에서 적절한 메서드를 호출하기 만하면됩니다. 파일을 업로드하려면 :

db.FileStorage.Upload (“저자-사진”, @”C : \ Temp \ Joydip.jpg”); // 파일을 데이터베이스에 업로드합니다.
파일을 다운로드하려면 :
db.FileStorage.Download (“저자-사진”, @”C : \\ Joydip.jpg”); // 파일 시스템에 파일 다운로드

LiteDB는 파일 작업을 위해 두 개의 컬렉션을 생성합니다. 여기에는 _files_chunks. _files 컬렉션은 파일의 메타 데이터와 관련된 정보를 _chunks포함하고 저장을 위해 적절하게 분할 된 데이터를 포함합니다.