Como posso mapear uma lista de strings para minha entidade usando o NHibernate?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu tenho duas tabelas no meu banco de dados:Artigos e Tags

As tabelas Tags consistem em ArticleID (chave estrangeira) e uma Tag (varchar).

Agora preciso mapear tags de artigos em uma coleção somente leitura na entidade Article, usando tags IList ou tags ReadOnlyCollection.

Consultei o material de referência do NHibernate, mas não consigo descobrir quando usar Set, Bag e as outras coleções do Nhibernate.Já vi exemplos usando a coleção ISet, mas realmente não gosto de vincular minhas classes de entidade a um tipo NHibernate.

Como posso fazer o mapeamento no NHibernate?

editar:Acabei usando um <bag> em vez disso, como não requer um índice:

<bag name="Tags" table="Tag" access="nosetter.camelcase" lazy="false">
  <key column="ArticleId" />
  <element column="Tag" type="System.String" />
</bag>
Foi útil?

Solução

O tipo de coleção a ser usada no mapeamento depende de como você deseja representar a coleção no código.As configurações são mapeadas assim:

  • O <list> Mapas diretamente para um ilista.
  • O <map> mapeia diretamente para um IDictionary.
  • O <bag> mapeia para um IList.A não cumpre completamente a interface ilist porque o método Add () não é garantido para retornar o índice correto.Um objeto pode ser adicionado a um <bag> sem inicializar o ilista.Certifique -se de ocultar o ilista dos consumidores da sua API ou torná -lo bem documentado.
  • O <set> mapeia para um Iesi.Collections.ISet.Essa interface faz parte do Asi.

então se você quiser que um IList seja retornado, você usaria o <list> mapeamento.No seu caso, eu provavelmente mapearia usando o <list> mapeamento.

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