클래스 매핑을 사용하여 MongoDB 특정 속성으로 클래스 및 속성을 장식하지 마십시오.

2473 단어 classmappingmongodb
게임용 백엔드 서버를 개발 중이라고 가정해 보겠습니다. 백엔드는 C#(asp.net core)과 mongodb를 데이터베이스로 사용합니다. 한 가지 요구 사항은 도메인 모델을 수정할 수 있다는 것입니다. 예를 들어, 우리 고객은 게임에서 아래 Player.cs 클래스를 사용하고 데이터베이스에 저장하고 검색하도록 요청합니다.
다음과 같이 코딩할 수 있습니다.

public class Player
    {
        public string PlayerId { get; set; }
        public string Name { get; set; }

    }


일반적으로 모델에 액세스할 수 있는 경우 데이터베이스에 데이터를 저장하고 쿼리를 최적화하는 방법을 알려주기 위해 많은 속성을 추가할 것입니다.
예를 들어, PlayerId 속성이 기본 키여야 한다는 것을 데이터베이스에 알리려면 BsonId 속성을 PlayerId 속성에 추가하기만 하면 됩니다.
MongoDB.Bson.Serialization.Attributes 사용;

namespace Commons
{
    public class Player
    {
        [BsonId]
        public string PlayerId { get; set; }
        public string Name { get; set; }

    }
}


player.cs 클래스를 수정하지 않고도 동일한 결과를 얻을 수 있습니다. 이를 위해 mongodb csharp 클라이언트 라이브러리에서 제공하는 클래스 매핑 기능을 사용할 수 있습니다.
클래스 맵이 필요하기 전에 등록하는 것이 매우 중요합니다. 등록하기에 가장 좋은 위치는 MongoDB와의 연결을 초기화하기 전에 애플리케이션을 시작할 때입니다.
program.cs에 다음 코드를 추가할 수 있습니다.

BsonClassMap.RegisterClassMap<Player>(cm =>
            {
                cm.AutoMap();
                cm.MapIdMember(c => c.PlayerId)
                    .SetIdGenerator(new StringObjectIdGenerator())
                    .SetSerializer(new StringSerializer(BsonType.ObjectId));

                cm.SetIgnoreExtraElements(true);
            });


코드cm.AutoMap();는 기본 규칙을 사용하여 클래스와 해당 멤버를 매핑합니다.( http://mongodb.github.io/mongo-csharp-driver/2.0/reference/bson/mapping/conventions/ )
코드cm.MapIdMember(c => c.PlayerId)는 데이터베이스에 PlayerId 속성을 기본 키로 사용하도록 지시합니다.

mongodb 문서의 기본 키는 ObjectId(mongodb에 의해 정의된 사용자 정의 유형) 유형이지만 PlayerId가 문자열이기를 원하고 코드.SetIdGenerator(new StringObjectIdGenerator())를 사용하여 데이터베이스에 알리고 코드를 사용합니다..SetSerializer(new StringSerializer(BsonType.ObjectId)); 데이터베이스를 쿼리할 때 문자열로 다시 변환합니다.

여기에서 우리는 수정하지 않고도 도메인 모델을 사용하는 방법을 데이터베이스에 구체적으로 말할 수 있습니다. 아주 세다.
mongo db에서 클래스 매핑으로 할 수 있는 일이 훨씬 더 많습니다.
http://mongodb.github.io/mongo-csharp-driver/2.0/reference/bson/mapping/

감사

좋은 웹페이지 즐겨찾기