그리고 카우치베이스 EF 코어 공급자 는 이제 일반적으로 사용 가능. 이 릴리스에서는 엔티티 프레임워크 코어의 강력한 기능을 카우치베이스에 적용하여 .NET 개발자가 익숙한 EF 코어 패턴을 사용하여 카우치베이스로 작업할 수 있습니다.
카우치베이스 EF 코어 제공업체란 무엇인가요?
엔티티 프레임워크 코어(EF 코어)는 .NET 애플리케이션의 데이터베이스 액세스를 간소화하는 인기 있는 O/RM입니다. 이를 통해 개발자는 원시 데이터베이스 쿼리를 작성하는 대신 C# 개체와 LINQ 쿼리를 사용하여 데이터 작업을 할 수 있습니다. EF Core는 다양한 데이터베이스와의 통합을 지원하여 자동 변경 추적, 트랜잭션, 친숙한 DbContext API를 제공합니다. 개발자가 시간을 절약하고 다양한 프레임워크 및 데이터베이스 관련 라이브러리와 통합하는 데 사용할 수 있는 친숙한 인터페이스입니다.
그리고 카우치베이스 EF 코어 공급자 개발자는 엔티티 프레임워크 코어를 다음과 함께 사용할 수 있습니다. 카우치베이스 서버 그리고 카우치베이스 카펠a (현재 영구 무료 티어에서 사용 가능). 이 공급자를 사용하면 Linq 쿼리, DbContext 및 변경 추적을 사용하여 마치 관계형 엔터티인 것처럼 Couchbase 문서로 작업할 수 있습니다.
시작하기
Couchbase EF 코어 프로바이더를 설치하려면 다음을 추가합니다. NuGet 패키지:
|
1 2 3 4 5 |
# .NET CLI dotnet add package Couchbase.EntityFrameworkCore # Or using Package Manager Install-Package Couchbase.EntityFrameworkCore |
예: Couchbase와 함께 EF Core 사용
다음은 간단한 '장바구니'를 설정하고 사용하는 방법에 대한 예시입니다. 카우치베이스 EF 코어 공급자 쇼핑 카트 모델과 함께.
엔티티 모델 정의
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using Couchbase; using Couchbase.EntityFrameworkCore; using Couchbase.EntityFrameworkCore.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; using ILoggerFactory = Microsoft.Extensions.Logging.ILoggerFactory; public class Cart { public string CartId { get; set; } public DateTimeOffset Created { get; set; } public List<Item> Items { get; set; } } public class Item { public string ItemId { get; set; } public string Name { get; set; } public uint Quantity { get; set; } public decimal Price { get; set; } } |
카우치베이스용 DbContext 만들기
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public class CartContext : DbContext { public DbSet<Cart> Carts { get; set; } public DbSet<Item> Items { get; set; } private static readonly ILoggerFactory LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder => { builder.ClearProviders(); builder.AddNLog(); }); protected override void OnConfiguring(DbContextOptionsBuilder options) { options.UseCouchbase(new ClusterOptions() .WithCredentials("Administrator", "password") .WithConnectionString("couchbase://localhost") .WithLogging(LoggerFactory), couchbaseDbContextOptions => { couchbaseDbContextOptions.Bucket = "Shopping"; couchbaseDbContextOptions.Scope = "Ecommerce"; }); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Cart>().ToCouchbaseCollection(this, "Carts"); modelBuilder.Entity<Item>().ToCouchbaseCollection(this, "Items"); } } |
이 배열은 Couchbase에서 다음과 같은 버킷을 생성했다고 가정합니다. 쇼핑라는 범위가 포함된 전자 상거래컬렉션이 포함된 항목 그리고 카트.
또한 로깅은 선택 사항이지만 발생할 수 있는 문제를 파악하는 데 도움이 되도록 로깅을 켜두는 것이 좋습니다.
데이터 삽입 및 쿼리
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
await using var db = new CartContext(); var cart = new Cart { CartId = Guid.NewGuid().ToString(), Created = DateTimeOffset.Now, Items = new List<Item> { new Item { ItemId = Guid.NewGuid().ToString(), Name = "Widget", Price = 0.99M, Quantity = 1}, new Item { ItemId = Guid.NewGuid().ToString(), Name = "Foo", Price = 4.99M, Quantity = 3}, new Item { ItemId = Guid.NewGuid().ToString(), Name = "Baz", Price = 99.19M, Quantity = 1} } }; await db.AddAsync(cart); await db.SaveChangesAsync(); var items = await db.Items.Where(i => i.Name == "Foo").ToListAsync(); foreach (var i in items) { Console.WriteLine(JsonConvert.SerializeObject(i)); } |
다음은 Couchbase의 문서가 삽입된 후 어떤 모습일지 보여주는 예시입니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Key: 080c210a-34eb-45ea-b9b4-e5c6f8afa4d6 { "CartId": "080c210a-34eb-45ea-b9b4-e5c6f8afa4d6", "Created": "2025-03-13T17:16:31.9904224-04:00" } Key acf54397-51c4-4ad7-bf34-d0a42061b662 { "ItemId": "acf54397-51c4-4ad7-bf34-d0a42061b662", "CartId": "080c210a-34eb-45ea-b9b4-e5c6f8afa4d6", "Name": "Foo", "Price": 4.99, "Quantity": 3 } Key a3f25210-97f2-4c95-ad4b-f241dde0d9c3 { "ItemId": "a3f25210-97f2-4c95-ad4b-f241dde0d9c3", "CartId": "080c210a-34eb-45ea-b9b4-e5c6f8afa4d6", "Name": "Widget", "Price": 0.99, "Quantity": 1 } // ... etc ... |
GA 릴리스에서는 어떤 기능이 작동하나요?
EF Core의 전체 기능은 매우 방대합니다. 예를 들어, 가능한 모든 Linq 문을 처리하는 것은 SQL Server와 같은 성숙한 EF Core 제공업체에서도 거의 불가능에 가깝습니다. 하지만 이번 릴리스에서는 다음과 같은 많은 핵심 EF Core 기능을 지원합니다:
✅ LINQ 지원 - LINQ 쿼리를 다음과 같이 변환합니다. 카우치베이스 SQL++.
✅ 기본 CRUD 작업 - 예상대로 작업을 삽입, 업데이트 및 삭제합니다.
✅ 변경 추적 - 효율적인 업데이트를 위해 엔티티를 추적합니다.
또한 비동기 메서드를 사용하면 필수. 카우치베이스의 .NET SDK는 완전히 비동기식입니다. 비동기 메서드를 사용하려고 하면 다음과 같은 런타임 오류가 발생합니다. 카우치베이스 EF 코어 데이터베이스 공급자는 동기식 I/O를 지원하지 않습니다..
알려진 제한 사항
이는 중요한 이정표입니다, 일부 기능은 아직 개발 중입니다.를 포함합니다:
❌ 비정규화 - 문서 내부에 컬렉션 중첩(예 항목 내부 장바구니 단일 JSON 문서로)는 아직 지원되지 않습니다.
❌ 열심히 로드 중 - .포함() 문이 예상대로 작동하지 않을 수 있습니다.
❌ SQL++ 함수 지원 - 다음과 같은 일부 SQL++ 함수 메타, RYOW등이 완전히 구현되지 않았습니다.
❌ 거래 - 이번 릴리스에서는 아직 지원되지 않습니다.
대화에 참여하세요!
여러분의 피드백을 기다립니다! 미래를 만들어가는 데 도움을 주세요. 카우치베이스 EF 코어 공급자:
-
- 질문하고 경험 공유 에서 카우치베이스 .NET 포럼.
- Discord에서 채팅하기 - 커뮤니티 가입하기.
- 이슈 보고 및 기여 on GitHub.
다음 단계는 무엇인가요?
이번 릴리스는 시작에 불과합니다! 저희는 이 EF 코어 구현을 구축하기 위해 적극적으로 노력하고 있습니다. 피드백 는 기능의 우선순위를 정하는 데 도움이 됩니다.
지금 바로 사용해 보시고 의견을 알려주세요. 행복한 코딩이 되시길 바랍니다!