버전 3.0으로 업그레이드
개요
이 페이지에서는 .NET/ C# 드라이버 를 버전 3.0으로 업그레이드 할 때 애플리케이션 에 적용해야 할 변경 사항에 대해 설명합니다.
업그레이드 방법
이 페이지에는 .NET/ C# 드라이버 버전 3.0에 의해 도입된 잠재적인 호환성이 손상되는 변경이 나열되어 있습니다. .NET/ C# 드라이버 를 버전 3.0 으로 업그레이드 하려면 다음 단계를 따르세요.
호환성 페이지를 검토하여 새 운전자 버전이 애플리케이션 이 연결되는 MongoDB Server 버전 및 애플리케이션 이 실행되는 .NET 또는 .NET 프레임워크 버전과 호환되는지 확인합니다.
.NET/ C# 드라이버 의 2.x 버전을 사용하는 경우 v2.30 로 업그레이드 합니다. 이렇게 하려면 v2.x 업그레이드 가이드 를 따르세요.
버전 3.0 호환성이 손상되는 변경 섹션에 설명된 호환성이 손상되는 변경을 해결합니다.
예시
운전자 를 v2.14 에서 v3.0 로 업그레이드하는 경우 먼저 v2.x 업그레이드 가이드 를 참조하여 운전자 를 v2.30으로 업그레이드 합니다. 그런 다음 v3.0 에 대한 모든 호환성이 손상되는 변경을 주소 합니다.
버전 3.0 호환성이 손상되는 변경
운전자 는 MongoDB Server v3.6 및 이전 버전에 대한 지원 을 중단합니다. MongoDB Server 를 v4.0 이상으로 업그레이드 해야 합니다.
MongoDB Server 배포를 업그레이드하는 방법을 알아보려면 MongoDB Server 매뉴얼의 릴리스 노트를 참조합니다.
.NET/C# 드라이버 버전과 MongoDB Server 버전 간의 호환성에 대해 자세히 알아보려면 호환성 페이지를 방문하세요.
운전자 는 .NET Core 2.x 및 .NET Framework 4.6 에 대한 지원 을 중단합니다. .NET Core 3.x 이상 또는 .NET Framework 4.7.2 이상으로 업그레이드 해야 합니다.
.NET/ C# 운전자 버전과 .NET 버전 간의 호환성에 학습 보려면 호환성 페이지를 방문하세요.
운전자 는 레거시 v1.x를 구현하는 mongocsharpdriver NuGet 패키지 를 제거합니다. 운전자 버전 2.x의 API . v1.x를 사용하는 경우 API 를 사용하려면 새 API 마이그레이션 해야 합니다.
v2.30 에서 더 이상 사용되지 않는
MongoDB.Driver.Core
네임스페이스 의 클래스, 메서드 및 속성은internal
로 표시됩니다. 운전자 가 더 이상 사용되지 않는 클래스, 메서드 또는 속성 에 대한 대체품을 제공하는 경우 v2.30 의 컴파일러 메시지에 이를 표시합니다.이전 버전의 운전자 에서 더 이상 사용되지 않는
MongoDB.Bson
네임스페이스 의 메서드, 속성 및 생성자가 제거되었습니다. 운전자 가 더 이상 사용되지 않는 메서드, 속성 또는 생성자를 대체하는 기능을 제공하는 경우 v2.30 의 컴파일러 메시지에 이를 표시합니다.운전자 가
MONGODB-CR
인증 메커니즘 에 대한 지원 을 중단합니다. .NET/ C# 드라이버 에서 인증 을 구성하는 방법에 학습 보려면 인증 메커니즘을 참조하세요.이 운전자 는 대부분의 다른 LINQ 제공자가 사용하는 패턴 에 따라
IMongoQueryable
인터페이스를IQueryable
인터페이스로 대체합니다. 애플리케이션 에IMongoQueryable
에 대한 참조가 포함된 경우 이를IQueryable
로 바꿉니다.운전자 가
ClusterBuilder.ConfigureSdamLogging()
메서드를 제거합니다. 애플리케이션 에서 로깅을 구성하려면 로깅 가이드 를 참조하세요.LINQ2 제공자 가 이 버전의 운전자 에서 제거되었습니다. 모든 LINQ 쿼리에 LINQ3 를 사용해야 합니다.
클라이언트 사이드 프로젝션을 사용하는 쿼리는 기본값 으로
ExpressionNotSupportedException
오류를 발생시킵니다. 클라이언트 사이드 프로젝션을 활성화 하려면TranslationOptions
객체 의EnableClientSideProjections
속성true
로 설정하다 . 이TranslationOptions
객체AggregateOptions
또는FindOptions
객체 에 전달하여 단일 쿼리 에 대해 클라이언트 사이드 프로젝션을 활성화 하거나MongoClientSettings
객체 에 전달하여 애플리케이션 의 모든 쿼리에 대해 클라이언트 사이드 프로젝션을 활성화 .이전 버전의 .NET/ C# 드라이버 는 두 가지 GUID 표현 모드를 지원했습니다. 버전 3.0에서는
GuidRepresentationMode.V3
가 유일하게 지원되는 모드 입니다. 이 변경 사항은 운전자 에 다음과 같은 영향을 미칩니다.BsonBinaryData(Guid)
생성자가 제거되었습니다. GUID에서BsonBinaryData
객체 를 구성하려면BsonBinaryData.Create(Guid, GuidRepresentation)
생성자를 사용합니다.BsonBinaryData.GuidRepresentation
속성 이 제거되었습니다.4 하위 유형의
BsonBinaryData
객체에서만BsonBinaryData.ToGuid()
메서드를 호출할 수 있습니다. 객체 에 다른 하위 유형이 있는 경우BsonBinaryData.ToGuid(GuidRepresentation)
메서드를 호출하고 하위 유형을 지정해야 합니다.BsonTypeMapper
클래스를 사용한 GUID 변환이 제거되었습니다.GUID
값을 BSON 으로 변환하려면BsonBinaryData(<GUID>, GuidRepresentation.Standard)
생성자를 사용합니다.
앞의 변경 사항은 BSON 문서를 직접 직렬화 및 역직렬화하는 경우에만 애플리케이션 에 영향을 줍니다. MongoDB 문서를 POCO에만 매핑하는 경우
GuidRepresentationMode
는 애플리케이션 에 영향을 주지 않습니다..NET/ C# 드라이버 에서 GUID를 직렬화하는 방법에 학습 보려면 GUID 페이지를 참조하세요.
예외 클래스 및 관련 유형에는 더 이상
[Serializable]
속성이 포함되지 않으므로 더 이상 Microsoft 레거시 직렬화 API 지원 하지 않습니다. .NET/ C# 드라이버 를 사용하여 객체를 직렬화하는 방법을 학습 보려면 직렬화 가이드 를 참조하세요.TLS 1.0 및 1.1 은 더 이상 지원되지 않습니다. TLS 1.2 이상을 사용해야 합니다. .NET/ C# 드라이버 에서 TLS/SSL을 구성하는 방법에 학습 보려면 연결에서 TLS 활성화를 참조하세요.
기본값 운전자 는
Decimal128
및decimal
값을 BSONDecimal128
값으로 직렬화합니다. 이전 버전의 운전자 에서는 기본값 으로 운전자 가 이러한 값을 BSONstring
값으로 직렬화했습니다. v 에서decimal
또는Decimal128
값을 문자열로 string 3.0 직렬화하려면, 필드 에[BsonRepresentation(BsonType.String)]
속성을 적용 합니다.직렬화 중 BSON types 지정에 학습 보려면 POCO 페이지의 사용자 지정 직렬화 섹션을 참조하세요.
기본값 운전자 는
DateTimeOffset
값을 BSON 문서로 직렬화합니다. 이전 버전의 운전자 에서는 기본값 으로 운전자 가 이러한 값을 BSON 배열로 직렬화했습니다. v3.0 에서DateTimeOffset
값을 배열 로 직렬화하려면 다음을 수행합니다. 필드 에[BsonRepresentation(BsonType.Array)]
속성을 적용 합니다.기본값 JSON JSON 출력 모드 는 Relaxed Extended JSON JSON 으로, BSON string JSON BSON 문서를 설명하는 JSON 표준을 기반으로 하는 문자열 형식입니다. 완화된 확장 JSON 은 유형 보존을 희생하는 대신 가독성과 상호 운용성을 강조합니다.
다른 JSON 출력 모드 를 사용하려면 새
JsonWriterSettings
객체 를 만듭니다. 이 객체 의OutputMode
속성 을JsonOutputMode
열거형 의 값으로 설정한 다음 문서 를 직렬화할 때 객체 를ToJson()
메서드에 전달합니다. 다음 코드 예시 에서는 BSON 문서 를 Strict JSON 으로 직렬화하는 방법을 보여줍니다.// Configure JsonWriterSettings var jsonWriterSettings = new JsonWriterSettings { OutputMode = JsonOutputMode.Strict }; // Serialize the document to JSON using the configured settings var json = document.ToJson(jsonWriterSettings); MongoClient
생성자는 배열 대신 하나의Credential
객체 만 허용합니다.Amazon Web Services (Amazon Web Services) 인증 사용하려면 프로젝트 에
MongoDB.Driver.Authentication.AWS
패키지 추가하고 애플리케이션의 부트스트랩 코드에 인증 제공자 등록해야 합니다. .NET/ C# 드라이버 에서 Amazon Web Services 인증 사용하는 방법에 대해 자세히 학습 Amazon Web Services ID 및 액세스 관리를 참조하세요.사용 중 암호화 를 사용하려면 프로젝트 에
MongoDB.Driver.Encryption
패키지 를 추가하고 애플리케이션의 부트스트랩 코드에 암호화 메커니즘을 등록해야 합니다. .NET/ C# 드라이버 에서 사용 중 암호화 를 사용하는 방법에 학습 보려면 MongoDB Server 매뉴얼에서 사용 중 사용 중 암호화 를 참조하세요.부동 소수점
Infinity
또는NaN
값을 정수 표현으로 직렬화하거나 역직렬화하려고 하면 운전자 에서OverflowException
이(가) 발생합니다. 부동 소수점 및 값에 학습 보려면Infinity
NaN
Double.NaN, Double.PositiveInfinity 및 Double.NegativeInfinity를 참조하세요. MSDN에서.운전자 에는
BsonValue
클래스에 대한 다음과 같은 변경 사항이 포함되어 있습니다.AsLocalTime
및AsUniversalTime
속성에서[Obsolete]
속성을 제거합니다.AsNullableLocalTime 및 AsNullableUniversalTime 속성을 추가합니다.
AsDateTime
속성 제거합니다. 대신 AsUniversalTime 속성 을 사용하세요.AsNullableDateTime
속성 제거합니다. 대신 AsNullableUniversalTime 속성 을 사용하세요.
운전자
MongoClient.Cluster
에서 개별 클러스터 이벤트를 제거합니다. 클러스터 이벤트를 수신하려면 ClusterBuilder.Subscribe() 메서드를 호출합니다.컬렉션 의 모든 형식에서 스칼라 판별자를 사용하는 경우 컬렉션 에 대해 다음 작업 중 하나를 수행하면 운전자 예외가 발생합니다.
다음 예시 와 같이
Aggregate().OfType<T>()
메서드를 호출합니다.collection.Aggregate().OfType<T>() 다음 예시 와 같이
Aggregate().Match(item => item is T)
메서드를 호출합니다.collection.Aggregate().Match(item => item is T)
컬렉션 에서 앞의 방법 중 하나를 사용하려면 컬렉션 의 각 클래스에 계층적 판별자를 적용 됩니다. 방법을 학습 다형성 객체 페이지를 참조하세요.
또는 각 항목의 유형을 다른 방식으로 확인할 수 있습니다. 예시 를 들어
Where()
메서드를 호출하고 다음 예시 와 같이 항목의 유형을 찾고 있는 유형과 비교하는 표현식 전달할 수 있습니다.collection.AsQueryable().Where(item => item.GetType() == typeof(T)); 유형 판별자에 대해 자세히 학습 다형성 객체를 참조하세요.
운전자 상속을 사용하여 확장하도록 설계되지 않은 일부 유형을 봉인했습니다. 여기에는 다음과 같은 변경 사항이 포함됩니다.
운전자 모든 콘크리트 직렬 변환기를 봉인합니다. 사용자 지정 직렬 변환기를 구현 하려면
IBsonSerializer
인터페이스를 구현 .운전자
MongoClient
,MongoDatabase
및MongoCollection
클래스를 봉인합니다.IMongoClient
,IMongoDatabase
및IMongoCollection
인터페이스를 직접 사용하는 것이 좋습니다.
운전자 사용하려면 애플리케이션이
GuidSerializer
및ObjectSerializer
클래스를 사용하여 GUID를 직렬화하는 방법을 명시적으로 구성해야 합니다. 새 애플리케이션을 빌드하는 .NET/ C# 드라이버 사용자는 글로벌GuidSerializer
을(를) 등록하여 구현 수 있습니다. 이전 애플리케이션을 사용하는 사용자는 글로벌GuidSerializer
를 구현할 때 모든GUIDs
가 동일한 방식으로 직렬화되었는지 확인하는 것이 좋습니다. 글로벌GuidSerializer
를 등록하지 않고도GUID
직렬화를 사례별로 구성할 수도 있습니다.GUID 직렬화에 대해 자세히 학습 GUID 가이드 참조하세요.