Pergunta

Eu tenho um mapeamento Ordem com muitos OrderItems. O mapeamento salva corretamente tanto a Ordem e OrderItems ao banco de dados quando eu faço uma gravação apenas na Ordem, mas quando eu recarregar nessa ordem, a lista de OrderItems que a ordem contém é preenchido com valores nulos (para todos os itens othe ordem em a mesa) até atingir o OrderItem que tem chave estrangeira da Ordem. Portanto, a contagem total de itens de ordem nula é a contagem de linhas da tabela de OrderItems, (sans os itens da ordem de reais que estão relacionados com a Ordem). Aqui está o meu mapeamentos:

Ordem:

<list name="OrderItems" table="OrderItems" cascade="all" inverse="true" >
  <key column="OrderID"/>
  <index column="OrderItemID" />
  <one-to-many class="OrderItem" not-found="ignore" />
</list>

OrderItem:

<many-to-one name="Order" class="Order" column="OrderID" not-null="true" />

Aqui está implementação de classe da Ordem:

public class Order : {
    private IList<OrderItem> orderItems = new List<OrderItem>();

Eu li que nHibernate não suporta listas como a muitos parte de um relacionamento, mas o salvamento funciona corretamente, não apenas a carga. Eu tenho que converter tudo para Conjuntos para que isso funcione?

Foi útil?

Solução

Apenas do topo da minha cabeça, eu me lembro de ter problemas com

<list> 

e recorreu a

<bag> 

em vez de mapear para a interface .NET IList. Não tenho certeza se isso vai resolver o seu problema.

O que pode ser útil é olhar para a forma como o SQL real que é bater o banco de dados é diferente do que você espera habilitando o log para Console.Out ( veja este blog )

Outras dicas

Não é este causado porque sua coleção OrderItems é preguiçoso carregado? Se você especificar preguiçoso = false na sua lista (ou bolsa) mapeamento, então isso não deve ser mais o caso.

O offcourse questão é, quer de carga preguiçoso os OrderItems, ou não? :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top