Con la actualización reciente a 10gen c# driver for mongodb Quiero actualizar mi código para que use la versión fuertemente tipada.cómo actualizar elementos en una matriz/lista con el controlador mongo C#?
Mi llamada anterior era:
var update2 = new UpdateBuilder();
var index = album.Ratings.IndexOf(rating);
update2.Set("Ratings." + index + ".Number", number);
update2.Set("Rating", album.Rating);
_session.Db().GetCollection<Album>("Album")
.Update(Query<Album>.Where(x => x.Id == objId), update2); //this line is working
La nueva llamada sería:
update.Set(x => x.Ratings[index].Number, number);
//update2.Set("Ratings." + index + ".Number", number); previous call
pero me da esta excepción:
No se puede determinar la información de serialización para la expresión : (Album x) => x.Ratings.get_Item (WebApp.Areas.API.Controll ers.RatingController + <> c__DisplayClass5.index) .Number.
¿Hay alguna manera de que pueda actualizar un elemento dentro de una lista?
Gracias Craig, algo que también sería realmente agradable es cuando al llamar _session.Db(). GetCollection ("Anunciante") si no tenemos que escribir "Publicidad" y que toma por defecto el nombre de la clase, ¡así que no tendremos una cadena mágica en la aplicación! ¡Es un trabajo muy bueno que se ha hecho en mongo-LINQ! –
VinnyG
Eso es un debate en curso. https://jira.mongodb.org/browse/CSHARP-126. Por ahora, la mayoría de las personas escribe un método de extensión que usa typeof (T) .Name para el nombre de la colección. –
Reparado desde 1.6.1 – VinnyG