반응형
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
반응형
'Program Tip' 카테고리의 다른 글
Mac OS X에서 쉘 스크립트를 통해 무선 SSID 가져 오기 (0) | 2020.12.10 |
---|---|
git 로그를 텍스트 파일로 내보내려면 어떻게해야합니까? (0) | 2020.12.10 |
UIView 크기는 어떻게 변경합니까? (0) | 2020.12.10 |
인증없이 Swagger URL에 액세스 할 수 있도록 Spring Security를 구성하는 방법 (0) | 2020.12.10 |
Oracle에서보기 란 무엇입니까? (0) | 2020.12.10 |