Mis problemas personales "explicados con frecuencia":
Antipatrones
Jugueteando con objetos separados (SaveOrUpdate o Merge más algún código desordenado) en lugar de usar DTO. Cuanto más complejas son las entidades, más desordenado es el código. (También significa que funciona bastante bien con entidades triviales). Ayende también lo llama el Patrón Stripper y explica el problema de encapsulación.
No entender la ignorancia de persistencia y escribir aplicaciones NH como cuando se usa SQL explícito. Síntoma de eso: llamando a Update después de cambiar un objeto, preguntándose por qué persisten los cambios, incluso si no se ha llamado a Update, preguntándose cómo evitar que los cambios persistan.
No comprende las transacciones y el patrón de la unidad de trabajo . Anti-patrones frecuentes: transacciones implícitas, sesión por operación y sesión por aplicación. Un poco más de lectura:
Uso de eventos NH para poner la lógica de la aplicación (p. Ej., Seguimiento de cambios en disparadores de inserción y actualización)
Crea una clase por mesa . Algunas personas no entienden OOD, otras no entienden el diseño relacional.
Errores
uso de uno a uno en lugar de muchos a uno. Intenté explicarlo en esta respuesta .
Usando join fetch en combinación con SetMaxResult. Mis últimas respuestas relacionadas con ese tema:
Escritura de entidades auto cambiantes . Cuando una entidad no devuelve exactamente el valor establecido por NH, se considera sucio y se actualiza en cada sesión. Por ejemplo: reemplazar la colección persistente NH en un establecedor de propiedades.
IList<Address> Addresses
{
get { return addresses; }
// will cause the addresses collection to be built up from scratch
// in the database in every session, even when just reading the entity.
set { addresses = new List<Address>(value); }
}
int Whatever
{
// will make the entity dirty after reading negative values from the db.
// this causes unexpected updates after just reading the entity.
get { if (whatever < 0) return 0; }
set { whatever = value; }
}
Puede ser más está siguiendo.