2010-02-19 9 views
8

Estoy moviendo un proyecto de SubSonic a NHibernate y estoy usando Fluent NHibernate para realizar todo nuestro mapeo. Nuestro esquema db es bastante directo y la mayoría de nuestros casos parecen estar bien ilustrados por diferentes publicaciones de blog y códigos de muestra que están disponibles.configurar el mapeo de NHibernate con Fluidez para permitir INSERT solo?

Sin embargo, una cosa que no puedo descifrar es la capacidad de asignar una columna para que su valor solo se pueda establecer en el INSERT inicial de los datos. Es un valor generado en nuestro nivel de aplicación, y una vez insertado, no queremos permitir que se actualice más.

He intentado lo obvio (pero incorrecta)

Map(x => Foo).ReadOnly() 

¿Cuál sería la cadena de función apropiada para llevar a cabo lo que busco?

Respuesta

15

Después de mucho experimentation--

Map(u => Foo).Not.Update(); 

Aparece estar haciendo lo que deseo - pero me encantaría si las manos más experimentadas intervino para confirmar que mi interpretación de los resultados es exacta. No me gustaría marcar esto como la respuesta e inadvertidamente enviar a los visitantes futuros por el camino equivocado.

+7

Eso es correcto. Insertar y actualizar ambos valores predeterminados en verdadero, por lo que al decir que su propiedad es "no actualizable" implica que todavía es insertable. Si solo quería actualizar, haría 'Not.Insert()'; y si no quisieras ninguno, harías 'ReadOnly()'. –

+0

¿Qué pasará si intento actualizar esa propiedad? Supuse que se lanzaría una excepción, pero hice algunas pruebas y felizmente las actualicé aunque lo configuré en .Not.Update(). ¿Qué me estoy perdiendo? – Muxa

Cuestiones relacionadas