2009-05-14 3 views
0

Nous avons une application multi-niveaux utilisant CSLA Business Objects et NHibernate ORM. Dans nos Business Objects, nous considérons nos membres de données de collecte comme ICollection<T>, et dans nos fichiers de mappage d'objets, nous les définissons comme <set> s. Comme NHibernate utilise ses propres types concrets pour récupérer ces collections, nous avons un problème lorsque ces collections atteignent le client, car nous ne référençons pas l'assembly NHibernate dans l'application cliente (et nous ne voulons pas changer cela).).Utilisation de NHibernate et ne référençant pas son assembly dans l'application client

Existe-t-il un moyen de résoudre cela ou d'obliger NHibernate à utiliser un type de collection .net, ou notre propre type de collection, sans implémenter aucune interface de type de collection NHibernate?

Merci à l'avance,

Yaron.

Répondre

0

NHibernate a besoin de ses propres implémentations des collections pour gérer les états de maintien en vigueur. Vous ne pouvez donc pas modifier le comportement de NHibernates.

Nous utilisons WCF, il transforme les collections en tableaux ou listes lors de la sérialisation. Si votre infrastructure ne le fait pas, vous devez convertir les objets avant de les envoyer au client.

Il est préférable d'utiliser un modèle DTO (objet de transfert de données) de toute façon. Vous devez copier toutes les données du modèle commercial dans le modèle DTO.

Si vous n'aimez pas avoir un modèle DTO, je pense que vous devez échanger vos collections. Ecrire une méthode qui échange les collections de NH avec des collections de framework .NET, par exemple. en utilisant la réflexion. Ou - vous vivez avec la référence à NHibernate sur le client.

Questions connexes