Tengo una clase de dominio que se ve así. Quiero NHibernate a guardar el valor actual de LastUpdate
al insertar/actualizar para poder usarlo en las consultas, pero ignorarlo cuando recupero un Foo
de la base de datos y dejar que el objeto recalcule el valor cuando realmente tengo acceso a él.Asignación de una propiedad de solo lectura sin setter con Fluidez NHibernate
public class Foo {
public DateTime LastUpdate {
get {
/* Complex logic to determine last update by inspecting History */
return value;
}
}
public IEnumerable<History> History { get; set; }
/* etc. */
}
Mi mapeo para Foo
se ve así:
public class FooMap : ClassMap<Foo> {
Map(x => x.LastUpdate)
.ReadOnly();
HasMany(x => x.History);
// etc...
}
pensé que ReadOnly()
era lo que quería lograr esto, pero cuando trato de crear una SessionFactory consigo la siguiente excepción:
Error: FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
---> NHibernate.PropertyNotFoundException: Could not find a setter for property 'LastUpdate' in class 'Foo'.
La propiedad no tiene un setter porque no se debe establecer, solo lee de. ¿Es correcto ReadOnly()
aquí? Si no, ¿qué?
(v3.0b1 NHibernate, Fluido v1.1 NHibernate)
El ReadOnly() ; solo establece en la correlación mapeada xml las secuencias insert = "false" y la actualización = "false" de la propiedad LastUpdate. – tolism7