MongoDB C # Driver-Ignorar campos en el enlace
Cuando se usa un findOne() usando MongoDB y C#, ¿hay una manera de ignorar los campos que no se encuentran en el objeto?
POR ejemplo, modelo de ejemplo.
public class UserModel
{
public ObjectId id { get; set; }
public string Email { get; set; }
}
Ahora también almacenamos una contraseña en la colección MongoDB, pero no queremos vincularla al objeto anterior. Cuando hacemos un Get like so,
var query = Query<UserModel>.EQ(e => e.Email, model.Email);
var entity = usersCollection.FindOne(query);
Obtenemos el siguiente error
Element 'Password' does not match any field or property of class
¿Hay alguna manera de decirle a Mongo que ignore los campos que no pueden coincidir con los modelos?
3 answers
Sí. Simplemente decora tu clase UserModel
con el BsonIgnoreExtraElements
atributo:
[BsonIgnoreExtraElements]
public class UserModel
{
public ObjectId id { get; set; }
public string Email { get; set; }
}
Como su nombre indica, el controlador ignoraría cualquier campo adicional en lugar de lanzar una excepción.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-03 19:39:43
Otra posible solución, es registrar una convención para esto.
De Esta manera, no tenemos que anotar todas las clases con [BsonIgnoreExtraElements].
En algún lugar al crear el cliente mongo, configure lo siguiente:
var pack = new ConventionPack();
pack.Add(new IgnoreExtraElementsConvention(true));
ConventionRegistry.Register("My Solution Conventions", pack, t => true);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-25 15:11:37
Sí. Otra forma (en lugar de editar su clase modelo) es usar "Registrar Mapa de clase " con "SetIgnoreExtraElements "
En su caso, simplemente agregue este código cuando inicialice su controlador:
BsonClassMap.RegisterClassMap<UserModel>(cm =>
{
cm.AutoMap();
cm.SetIgnoreExtraElements(true);
});
Puede leer más sobre la asignación de clases Mongo en:
Http://mongodb.github.io/mongo-csharp-driver/2.0/reference/bson/mapping /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-28 15:17:39