BsonDocument 개체를 클래스로 역직렬화하는 방법
BsonDocument 객체를 서버에서 가져온 후 클래스로 역직렬화하려면 어떻게 해야 합니까?
QueryDocument _document = new QueryDocument("key", "value");
MongoCursor<BsonDocument> _documentsReturned = _collection.FindAs<BsonDocument>(_document);
foreach (BsonDocument _document1 in _documentsReturned)
{
//deserialize _document1
//?
}
Bson Reader를 사용하여 역직렬화합니까?
실제로 세 가지 방법이 있습니다.
1.직접 로드할 유형 지정FindAs<>
var docs = _collection.FindAs<MyType>(_document);
2. 다음을 통해 문서를 역직렬화합니다.BsonSerializer
:
BsonSerializer.Deserialize<MyType>(doc);
3. 수동으로 문서에 있는 bs를 클래스에 매핑합니다.
var myClass = new Mytype();
myClass.Name = bsonDoc["name"].AsString;
대부분의 경우 첫 번째 접근 방식을 사용해도 괜찮습니다.그러나 문서가 구조화되지 않은 경우에는 세 번째 접근 방식이 필요할 수 있습니다.
구조화된 데이터가 있는 대형 응용프로그램의 경우 BsonDocument를 사용하는 대신 사용자 정의 모델을 사용하여 데이터를 만들고 가져오는 것이 좋습니다.
모델을 만드는 것은 역직렬화의 중요한 단계입니다.
모델을 만드는 동안 기억해야 할 유용한 주석:
- 더하다
id
모델의 속성.사용해 보십시오.[BsonId]
모범 사례의 속성: - 다음과 같이 주석을 사용하여 속성 만들기
[BsonExtraElements]
역직렬화 중에 발견된 추가 요소를 고정하는 데 사용됩니다. - 사용할 수 있습니다.
[BsonElement]
요소Name을(를) 지정합니다. [BsonIgnoreIfDefault]
BsonIgnoreIfDefaultAttribute 클래스의 새 인스턴스를 초기화합니다.
샘플 모델 구조, 최대 사례를 다루려고 했습니다.더 나은 아키텍처를 위해 _id 속성에 대한 기본 클래스를 만들었지만 에서 직접 사용할 수 있습니다.MyModel
수업도 마찬가지야.
public abstract class BaseEntity
{
// if you'd like to delegate another property to map onto _id then you can decorate it with the BsonIdAttribute, like this
[BsonId]
public string id { get; set; }
}
public class MyModel: BaseEntity
{
[BsonElement("PopulationAsOn")]
public DateTime? PopulationAsOn { get; set; }
[BsonRepresentation(BsonType.String)]
[BsonElement("CountryId")]
public int CountryId { get; set; }
[Required(AllowEmptyStrings = false)]
[StringLength(5)]
[BsonIgnoreIfDefault]
public virtual string CountryCode { get; set; }
[BsonIgnoreIfDefault]
public IList<States> States { get; set; }
[BsonExtraElements]
public BsonDocument ExtraElements { get; set; }
}
이제 Deserialise로 전화하는 동안 모델을 직접 사용하십시오.FindAsync
다음과 같이:
cursor = await _collection.FindAsync(filter,
new FindOptions<MyModel, MyModel>()
{ BatchSize = 1000, Sort = sort }, ct);
언급URL : https://stackoverflow.com/questions/9478613/how-to-deserialize-a-bsondocument-object-back-to-class
'programing' 카테고리의 다른 글
유성: 예기치 않은 몽고 종료 코드 100 (0) | 2023.05.24 |
---|---|
PostgreSQL: Postgre의 사용자에게 모든 권한 부여SQL 데이터베이스 (0) | 2023.05.24 |
nodejs mongodb 네이티브 드라이버에서 문자열을 ObjectId로 변환하는 방법은 무엇입니까? (0) | 2023.05.14 |
문자열 배열에 문자열을 추가하는 방법은 무엇입니까?없습니다.함수 추가 (0) | 2023.05.14 |
iOS Simulator에서 네트워크 호출을 모니터링하는 방법 (0) | 2023.05.14 |