Meus problemas pessoais "frequentemente explicados":
Anti-Padrões
Brincando com objetos desanexados (SaveOrUpdate ou Merge mais algum código confuso) em vez de usar DTOs. Quanto mais complexas as entidades, mais confuso é o código. (Isso também significa que funciona muito bem com entidades triviais.) Ayende também o chama de Stripper Pattern e explica a questão do encapsulamento.
Não entendendo a ignorância da persistência e escrevendo aplicativos NH como ao usar SQL explícito. Sintoma disso: chamar o Update após alterar um objeto, perguntando-se por que as alterações persistem, mesmo que o Update não tenha sido chamado, perguntando-se como evitar que as alterações sejam persistidas.
Não compreendendo transações e o padrão de unidade de trabalho . Antipadrões frequentes: transações implícitas, sessão por operação e sessão por aplicativo. Um pouco mais de leitura:
Usando eventos NH para inserir a lógica do aplicativo (por exemplo, rastreamento de alterações nos gatilhos de inserção e atualização)
Crie uma classe por tabela . Algumas pessoas não entendem OOD, outras não entendem o design relacional.
Erros
uso de um para um em vez de muitos para um. Eu tentei explicar nesta resposta .
Usando junção buscar em combinação com SetMaxResult. Minhas respostas mais recentes relacionadas a esse tópico:
Escrevendo entidades que mudam automaticamente . Quando uma entidade não retorna exatamente o valor que foi definido pelo NH, ela é considerada suja e atualizada em todas as sessões. Por exemplo: substituindo a coleção persistente NH em um configurador de propriedades.
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; }
}
Pode ser mais está seguindo.