Como dizer NHibernate para mapear um-para-muitos relação com List e não IList ?

StackOverflow https://stackoverflow.com/questions/1086333

  •  23-08-2019
  •  | 
  •  

Pergunta

Can I alguma forma dizer NHibernate para mapear meu relacionamento um-para-muitos para uma propriedade que é do tipo lista em vez do IList interface?

Eu sei que NHibernate usa sua própria IList-implementação para carregamento lento, mas eu não preciso desse recurso. Em vez disso eu preciso de uma classe que pode ser serializado, que eu não pode realizar usando a interface IList em vez de concreto Lista de classe.

Foi útil?

Solução

A resposta simples não é, você não pode dizer NHibernate para uso List<T>. Este pergunta anterior discute com mais detalhes.

O melhor artigo que pude encontrar sobre a serialização NHibernate objetos é voltada para usuários WCF.

Outras dicas

Se você realmente precisar fazer isso sua única opção real é mudar sua estratégia de serialização.

Você pode usar o atributo DataContract em System.Runtime.Serialization em vez do atributo de serialização padrão. Isto irá apoiar a serialização de interfaces.

Se você precisar usar a serialização padrão, então você pode usar uma propriedade separada para armazenar os valores que deseja ser serializado e simplesmente preenchê-lo na serialização:

//NHibernate property
public virtual IList<Entity> Entities
{
    get;
    set;
}

//Serialized property
public List<Entity> SerializedEntities
{
    get;
    set;
}

[OnSerializing]
void DoStuff(StreamingContext context)
{
    SerializedEntities = // Whatever you want to serialize...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top