출시되었습니다: Linq2Couchbase v1.1.0 Couchbase N1QL용 공식 Linq 공급자!

출시되었습니다: Linq2Couchbase v1.1.0 Couchbase N1QL용 공식 Linq 공급자!

이번 주 초에 Couchbase Server용 공식 Linq 공급자인 Linq2Couchbase의 v1.1.0(특히 v1.1.0.2)을 출시했습니다. N1QL! 이번 릴리스에는 새롭고 실험적인 기능뿐만 아니라 버그 수정과 1.0.X에 비해 많은 개선 사항이 포함되어 있습니다. 이 게시물에서는 해당되는 경우 새로운 기능에 대해 설명하고 데모를 보여드리겠습니다!

기여자

Linq2Couchbase는 커뮤니티가 주도하는 프로젝트입니다. 넘버원 기여자 (감사합니다 Brant)는 커뮤니티 회원입니다! 기여하거나 피드백을 보내고 싶으시면 언제든지 깃허브 프로젝트 또는 Jira 프로젝트.

주요 기능 및/또는 커밋

이번 릴리스에는 다음과 같은 기능을 포함하여 30개 이상의 커밋이 적용되었습니다:

  • IExtendedTypeSerializer를 확장하여 사용자 지정 직렬화기와의 호환성 지원
  • DATE_DIFF, DATE_ADD, DATE_PART 및 DATE_TRUNC와 같은 날짜 함수 지원
  • 배열에 대한 포함 작업 지원
  • 쿼리에서 열거형 및 GUID 상수 지원
  • 유니온 명세서 지원
  • 인라인 XML 문서 개선
  • .ExecuteAsync를 사용하여 비동기 LINQ 쿼리 지원
  • RYOW에 대한 쿼리 일관성 수준 지정 지원
  • 향상된 오류 처리
  • 다양한 버그 수정

다음 몇 단락에서는 좀 더 중요하고 유용한 기능 몇 가지에 대해 설명하겠습니다.

변경 추적 및 프록시

1.1.0에 추가된 새로운 '실험적' 기능은 프록시 개체를 통한 변경 내용 추적 지원입니다. 이 기능의 사용 사례는 여러 문서를 수정하거나 추가하고 싶지만 나중에 일괄적으로 변경이 이루어지기를 원한다고 가정합니다. 예를 들어 요청이 시작되면 수정하거나 문서를 추가하려는 작업 메서드 내에서 컨텍스트가 생성되고, 요청이 끝나면 모든 것을 서버에 다시 제출하거나 오류가 발생한 경우 롤백하는 등, ASP.NET에서 웹 요청의 수명을 갖는 BucketContext 개체를 원한다고 가정해 보겠습니다.

변경 사항 추적은 버킷 컨텍스트.EnableChangeTracking() 메서드 전에 쿼리를 시작합니다.

일단 버킷 컨텍스트 는 결과 집합의 각 행을 가로채서 동적 프록시를 생성하여 속성 또는 하위 문서의 속성에 대한 변경 사항을 다시 버킷 컨텍스트.

예를 들어 목록에서 첫 번째 문서를 검색하고 속성을 수정한다고 가정해 보겠습니다. Abv:

속성 Abv 가 설정되어 있으면 이벤트가 트리거되어 버킷 컨텍스트 를 호출하면 수정된 문서에 대한 참조가 저장됩니다. 실제 업데이트는 나중에 다음과 같은 경우까지 Couchbase에서 발생하지 않습니다. 제출 변경 사항 를 호출합니다.

새 문서를 추가하는 것은 어떨까요? 이 경우에는 평소처럼 문서를 만든 다음 저장 에서 버킷 컨텍스트:

에 대한 호출은 db.Save 가 있어야 새 문서(프록시가 아닌)가 wrapped 를 프록시 내에 저장하고 추적합니다. 마지막으로 변경 사항을 서버로 다시 푸시하려면 다음을 호출합니다. 제출 변경 사항:

향후 게시물에서 훨씬 더 심층적인 예제를 통해 ASP.NET MVC 애플리케이션을 빌드하고 어떻게 버킷 컨텍스트 는 웹 요청으로 범위가 지정된 작업 단위(UoW)로 ASP.NEW 컨트롤러 내에서 사용할 수 있습니다.

IExtendedTypeSerializer를 통한 커스텀 직렬화기

한동안 Couchbase .NET SDK는 사용자 정의 직렬화기를 지원했습니다. 기본 직렬화기는 완전한 기능을 갖추고 잘 지원되는 직렬화기인 NewtonSoft JSON.NET을 기반으로 하지만 경우에 따라 다음과 같은 다른 직렬화기를 사용해야 할 수도 있습니다. Jil 또는 서비스 스택의 텍스트. 에서 뉴턴소프트 이외의 다른 JSON 직렬화기를 지원하려면 Linq2Couchbase라는 새로운 인터페이스를 추가했습니다. 또한 직렬화 메커니즘이 통합 지점으로 QueryRequest를 포함하도록 확장되어 사용자 지정 직렬화기를 전체 Couchbase .NET SDK에 일률적으로 사용하는 것이 아니라 요청별로 사용할 수 있습니다.

N1QL 날짜 함수 지원

N1QL은 .NET DateTime 메서드로 직접 변환되지 않는 많은 Date 함수를 지원합니다. 이번 릴리스에서는 다음과 같은 여러 함수에 대한 지원이 추가되었습니다. N1QL 날짜 기능를 포함합니다:

  • DATE_DIFF_STR
  • DATE_ADD_STR
  • DATE_PART_STR
  • DATE_TRUNC_STR

또한 각 함수에서 허용하는 날짜 부분 매개변수에 대해 N1QLDatePart라는 새로운 열거형이 추가되었습니다. 날짜 작업에 대한 자세한 내용은 다음을 참조하세요. 여기.

Relinq 2.0으로 업데이트하고 ILRepack 사용

Relinq가 제공하는 오픈 소스 라이브러리인 Linq2Couchbase(최대 절전 모드 그리고 엔티티 프레임워크 7 도) 최근 2.0이 출시되었으므로 최신 버전으로 업데이트했습니다. 동일한 프로젝트 내에서 EF 7과 함께 Linq2Couchbase를 더 쉽게 사용하고 필요한 종속성 수를 줄이기 위해 Relinq(및 Castle.Core) 종속성은 빌드 타임에 다음을 사용하여 병합되었습니다. ILRepack 를 누릅니다.

지원 대상 UNION 그리고 모두 통합 진술서

두 개의 쿼리 결과를 하나의 결과 집합으로 결합하기 위해 N1QL에는 두 개의 특수 문이 있습니다: UNION 그리고 모두 통합.

UNION은 각 쿼리에서 고유한 결과를 반환하며 이제 Linq2Couchbase에서 지원됩니다. 예를 들어 다음 Linq 쿼리를 살펴보겠습니다:

다음과 같은 모양의 N1QL 쿼리로 생성됩니다:

모두 통합 는 중복을 반환하며, Linq 구문은 Concat 메서드를 사용한다는 점에서 약간 다릅니다:

방출된 N1QL 쿼리는 다음과 같습니다:

여러 UNION도 적용할 수 있습니다!

비동기 Linq 쿼리

추가된 또 다른 멋진 기능은 비동기 Linq 쿼리에 대한 지원입니다. 비동기 그리고 기다림 연산자를 사용할 수 있습니다. IEnumerable과 스칼라(Sum, First(), Any())가 모두 지원된다는 점에 유의하세요.

다음은 IEnumerable 값을 반환하는 예제입니다:

다음은 스칼라 값 실행을 보여주는 또 다른 예시입니다:

두 경우 모두 쿼리 요청은 비차단 방식(일명 스레드 풀)으로 실행됩니다. 멋진 기능입니다.

받는 방법

다음 중 하나를 통해 1.1.0 Linq2Couchbase를 받을 수 있습니다:

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Jeff Morris, 수석 소프트웨어 엔지니어, Couchbase

Jeff Morris는 Couchbase의 수석 소프트웨어 엔지니어입니다. Couchbase에 입사하기 전에는 6년 동안 Source Interlink에서 엔터프라이즈 웹 아키텍트로 근무했습니다. Jeff는 Couchbase SDK 개발과 N1QL(쿼리 언어)과 통합하는 방법을 담당하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.