클래스 매핑을 사용하여 MongoDB 특정 속성으로 클래스 및 속성을 장식하지 마십시오.
2473 단어 classmappingmongodb
다음과 같이 코딩할 수 있습니다.
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/
감사
Reference
이 문제에 관하여(클래스 매핑을 사용하여 MongoDB 특정 속성으로 클래스 및 속성을 장식하지 마십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/giscard/use-class-mapping-to-avoid-decorating-classes-and-properties-with-mongodb-specific-attributes-3gkj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)