Home > Uncategorized > MongoMapper.NET

MongoMapper.NET

mongomapper_grandeAcabo de subir a la rama de producción los cambios de master

Lamentablemente he tenido que romper compatibilidad en algunas cosas.

-He cambiado todo el sistema de búsquedas,  he quitado el Finder y todos los métodos estáticos de la clase MongoMapper, a cambio he metido una clase nueva, MongoMapperCollection, que es la que se usara en las búsquedas:

var col = new MongoMapperCollection<Country>();
 
col.Find().SetLimit(1);     
Assert.AreEqual(1, col.Count);
Assert.AreEqual(3, col.Total);     
 
col.Find().SetLimit(3).SetSortOrder("Name");
Assert.AreEqual(3, col.Count);
Assert.AreEqual(3, col.Total);
 
col.Find(Query<Country>.EQ(C => C.Code, "NL"));
Assert.AreEqual("NL",col.First().Code);
Assert.AreEqual("NL", col.Last().Code);
 
foreach (Country country in col)
{}

También puedes heredar tu clase de MongoMapperCollection y usarla ya “Tipada”

public class CountryCollection: MongoMapperCollection<Country>
{}
 
var col = new CountryCollection();
 
col.Find().SetLimit(1);     
Assert.AreEqual(1, col.Count);
Assert.AreEqual(3, col.Total);     
 
col.Find().SetLimit(3).SetSortOrder("Name");
Assert.AreEqual(3, col.Count);
Assert.AreEqual(3, col.Total);
 
col.Find(Query<Country>.EQ(C => C.Code, "NL"));
Assert.AreEqual("NL",col.First().Code);
Assert.AreEqual("NL", col.Last().Code);
 
foreach (Country country in col)
{}

-La configuración también ha cambiado, como en cada versión están sacando cosas nuevas era inmantenible, la he cambiado para definir una Url con todas las configuraciones, ahora queda una cosa así:

<MongoMapperConfig>
    <Server Url="mongodb://127.0.0.1" />
    <Database Name="TestDotNET" />
    <Context Generated="true" MaxDocumentSize="8" ExceptionOnDuplicateKey="true" EnableOriginalObject="true"
             UseIncrementalId="true" UseChidlsIncrementalId="false" />
    <CollectionConfig>
      <add Name="TestConf1">
        <Server Url="mongodb://host1:27017,host2:27017,host3:1234/?readPreference=primaryPreferred;w=2" />
        <Database Name="Conf1" />
        <Context Generated="true" MaxDocumentSize="8" ExceptionOnDuplicateKey="true" EnableOriginalObject="true"
                 UseIncrementalId="false" UseChidlsIncrementalId="true" />
      </add>
      <add Name="Person">
        <Server Url="mongodb://127.0.0.1" />
        <Database Name="TestDotNETPerson" />
        <Context Generated="true" MaxDocumentSize="8" ExceptionOnDuplicateKey="true" EnableOriginalObject="true"
                 UseIncrementalId="true" UseChidlsIncrementalId="false" />
      </add>
    </CollectionConfig>
  </MongoMapperConfig>

- He cambiado el nombre al campo que controla la versión del Documento de MongoMapperDocumentVersion a m_dv y el MongoMapper_Id a m_id, el Id no pasa nada ya que internamente se guarda como _id,  pero el otro si, para colecciones con datos tendrás que usar el rename:

db.collection_name.update ( {}, { $rename : { "MongoMapperDocumentVersion" : "m_dv" }, false, true } );

Ademas necesita la versión >= 1.7 del Driver, ya que ellos también han hecho muchos cambios.

Otros cambios son:

  • Implementado ISupportInitialize para el tema de OriginalObject, ya no es necesario usar la versión modificada del Driver para esto
  • Posibilidad de susbcribise a eventos en el BeginInit y EndInit del ISupportInitialize, son OnObjectInit y OnObjectComplete
  • Añadida propiedad “ExtraElements” donde se recogerán los valores de los propiedades que no estén definidas en la clase.
  • Eliminado el <T> en todos los métodos no estáticos de la clase base, ahora queda mejor el código.
  • Eliminados todos los métodos de búsqueda que recibían una expresión, como expone la colección se puede usar el LINQ del Driver.
  • Update a la versión 1.7 del Driver, MongoClient, WriteConcern y todos esos cambios.

Esta versión esta ahora en master y en Producción.

https://github.com/emiliotorrens/MongoMapper.NET

Comments are closed.

TOP