반응형
MongoDB C# 드라이버 - 바인딩 시 필드 무시
MongoDB와 C#을 사용하여 FindOne()을 사용할 때 오브젝트에 없는 필드를 무시하는 방법이 있습니까?
EG, 예제 모형.
public class UserModel
{
public ObjectId id { get; set; }
public string Email { get; set; }
}
이제 MongoDB 컬렉션에도 비밀번호를 저장하지만 위의 오브젝트에는 바인드하지 않습니다.이렇게 Get Like를 하면
var query = Query<UserModel>.EQ(e => e.Email, model.Email);
var entity = usersCollection.FindOne(query);
다음과 같은 오류가 발생합니다.
Element 'Password' does not match any field or property of class
Mongo에게 모델과 일치하지 않는 필드를 무시하라고 할 수 있는 방법이 있습니까?
네. 그냥 장식만 하세요.UserModel
와의 클래스BsonIgnoreExtraElements
속성:
[BsonIgnoreExtraElements]
public class UserModel
{
public ObjectId id { get; set; }
public string Email { get; set; }
}
이름에서 알 수 있듯이 드라이버는 예외를 발생시키는 대신 추가 필드를 무시합니다.자세한 내용은 여기를 참조하십시오. 추가 요소 무시.
그러나 다른 가능한 해결책은 이에 대한 규약을 등록하는 것입니다.
이렇게 하면 [BsonIgnoreExtraElements]로 모든 클래스에 주석을 달 필요가 없습니다.
mongo 클라이언트를 작성할 때 다음을 설정합니다.
var pack = new ConventionPack();
pack.Add(new IgnoreExtraElementsConvention(true));
ConventionRegistry.Register("My Solution Conventions", pack, t => true);
네. 모델 클래스를 편집하는 대신RegisterClassMap
와 함께SetIgnoreExtraElements
.
이 경우는, 드라이버를 초기화할 때에 다음의 코드를 추가합니다.
BsonClassMap.RegisterClassMap<UserModel>(cm =>
{
cm.AutoMap();
cm.SetIgnoreExtraElements(true);
});
클래스 매핑을 사용하여 추가 요소를 무시하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다. - 추가 요소 무시
언급URL : https://stackoverflow.com/questions/23448634/mongodb-c-sharp-driver-ignore-fields-on-binding
반응형
'programing' 카테고리의 다른 글
리액트 라우터를 사용한 루트 변경 검출 (0) | 2023.03.22 |
---|---|
WordPress의 한 페이지에만 커스텀 css/js를 추가하는 방법 (0) | 2023.03.22 |
읽을 수 없는 노트북 Not JSONError ('노트북은 JSON이 아닌 것 같습니다: u\'{\n "cells": "...", ) (0) | 2023.03.22 |
react/redux에서 bindActionCreators는 언제 사용됩니까? (0) | 2023.03.17 |
woocommerce 제품 유형에서 옵션 선택 항목 숨기기 (0) | 2023.03.17 |