Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
/ / /

EF 코어 제공자 구성

이 가이드 에서는 MongoDB Entity Framework Core Provider를 사용하도록 애플리케이션 을 구성하는 방법을 학습 봅니다. 새 프로젝트 를 설정하다 하고 EF Core Provider를 설치하는 방법을 학습 보려면 빠른 시작을 참조하세요.

엔티티의 모델로 사용할 일반 이전 CLR/클래스 객체 또는 POCO를 만듭니다. POCO는 프레임워크별 기본 클래스나 인터페이스의 기능을 상속하지 않는 간단한 클래스 객체 입니다.

다음 코드 예제에서는 고객을 나타내는 POCO를 만드는 방법을 보여 줍니다.

public class Customer
{
public ObjectId Id { get; set; }
public string Name { get; set; } = null!;
public string Order { get; set; } = null!;
}

POCO에 대해 자세히 알아보려면 .NET/C# 드라이버 설명서에서 POCO 가이드 를 참조하세요.

Entity Framework Core 사용을 시작하려면 DBContext에서 파생되는 컨텍스트 클래스를 만듭니다. DbContext 파생 클래스 인스턴스 데이터베이스 세션을 나타내며 엔터티의 인스턴스를 쿼리 하고 저장하는 데 사용됩니다.

DBContext 클래스는 해당 컨텍스트를 사용하는 동안 상호 작용할 수 있는 엔터티를 지정하는 DBSet 속성을 노출합니다.

다음 예제에서는 DBContext 파생 클래스의 인스턴스를 만들고 Customer 객체를 DBSet 속성으로 지정합니다.

public class MyDbContext : DbContext
{
public DbSet<Customer> Customers { get; init; } = null!;
public MyDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Customer>().ToCollection("customers");
}
}

이전 코드 예시에서는 OnModelCreating() 메서드를 재정의합니다. OnModelCreating() 메서드를 재정의하면 모델 및 해당 속성에 대한 구성 세부 정보를 지정할 수 있습니다. 이 예제에서는 ToCollection() Customer 메서드를 사용하여 customers 애플리케이션의 엔터티가 MongoDB의 collection에 매핑되도록 지정합니다.

DBContext 클래스를 만든 후 DbContextOptionsBuilder 객체를 생성하고 해당 UseMongoDB() 메서드를 호출합니다. 이 메서드는 인스턴스 MongoClient 와 작업 중인 collection을 저장하는 데이터베이스의 이름이라는 두 가지 매개변수를 사용합니다.

UseMongoDB() 메서드는 DbContextOptions 객체를 반환합니다. 이 객체의 Options 속성을 DBContext 클래스의 생성자에 전달합니다.

다음 예제에서는 이러한 방식으로 DBContext 객체를 구성하는 방법을 보여 줍니다.

var mongoClient = new MongoClient("<connection string>");
var dbContextOptions =
new DbContextOptionsBuilder<MyDbContext>().UseMongoDB(mongoClient, "<database name>");
var db = new MyDbContext(dbContextOptions.Options);

MongoClient 만들기

EF Core Provider를 사용할 때 MongoDB .NET/ C# 드라이버 에서 메서드를 호출할 수 있습니다. 이전 예시 에서는 .NET/ C# 드라이버 의 MongoClient() 메서드를 사용하여 MongoDB 인스턴스 에 연결하는 MongoDB 클라이언트 를 만듭니다.

MongoDB .NET/C# 드라이버를 사용하여 MongoDB에 연결하는 방법에 대해 자세히 알아보려면 .NET/C# 드라이버 설명서의 연결 가이드 를 참조하세요.

MongoClientDbContext 객체의 수명과 구성은 메모리 사용량 및 연결 풀 효율성 직접적인 영향을 미칩니다.

MongoClient 싱글톤으로 등록하고 모든 DbContext 등록에서 단일 인스턴스 주식 . 각 MongoClient 객체 자체 내부 연결 풀 관리하기 때문에 각 범위에 대해 별도의 인스턴스 만들면 DbContext 연결이 낭비되고 지연 시간 늘어납니다.자세한 학습 은 .NET/ C# 드라이버 설명서에서 MongoClient 일회용 관리 항목을 참조하세요.

각 요청 새 DbContext 변경 추적기를 사용하도록 을 범위가 지정된 서비스로 등록합니다. 싱글톤 은 DbContext 모든 요청에서 추적된 엔터티 상태 누적하므로 추적기가 커짐에 따라 오래된 데이터, 메모리 증가, 변경 감지 속도 저하가 증가합니다. 자세한 학습 은 Microsoft Entity Framework Core 문서에서 ASP .NET Core용 종속성 주입의 DbContext를 참조하세요.

다음 코드 예시 종속성 주입을 사용하여 서비스를 등록하고, EF Core Provider를 구성하고, 데이터베이스 에 문서 삽입하는 방법을 보여 줍니다.

var serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton<IMongoClient>(
new MongoClient("<connection string>"));
serviceCollection.AddDbContext<MyDbContext>((serviceProvider, options) =>
{
var mongoClient = serviceProvider.GetRequiredService<IMongoClient>();
options.UseMongoDB(mongoClient, "<database name>");
});
var app = serviceCollection.BuildServiceProvider();
using (var scope = app.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<MyDbContext>();
// Add a new customer and save it to the database
db.Customers.Add(new Customer() { Name = "John Doe", Order = "1 Green Tea" });
db.SaveChanges();
}

돌아가기

Fundamentals

이 페이지의 내용