2009-10-03 17 views
1

Dans mon application, je dois enregistrer avec les entités NHibernate reçues du service WCF.Enregistrer les entités reçues du service WCF

Actuellement j'utilise la méthode SaveOrUpdate de session à cet effet.

Souvent, nous n'avons pas besoin d'éditer les propriétés de référence, donc du client je reçois l'objet, qui a des collections vides. Mais je ne veux pas que cette collection vide reflète dans la base de données.

Exemple:

public class Product 
{ 
    public virtual string Name {get;set;} 
    public virtual IList<Stores> Stores {get;set;} <--- Stores is empty, but should not be cleared in databse. 
} 

Merci, Oksana.

+0

Pourriez-vous expliquer votre question plus en détail? –

Répondre

1

D'après ce que je comprends, vous voulez mettre à jour certaines propriétés de l'objet s'il existe déjà, et ne touchez pas les autres, est-ce correct?

Eh bien, au fond, dans ce cas, ce que vous devez faire est la suivante:

  • établir une session NHiberate
  • basé sur une pièce d'identité, charger l'état actuel de l'objet à partir de la base de données
  • mise à jour ces propriétés que vous souhaitez mettre à jour de l'entité que vous avez reçu dans votre appel de service
  • enregistrer l'objet modifié Retour

Avec cette approche, vous ne mettez à jour que les propriétés souhaitées et tout le reste est laissé seul.

Cela vous semble-t-il être une approche avec laquelle vous pouvez travailler?

Marc

+0

Merci pour la réponse, c'est ce dont j'ai besoin! Oksana – Oksana

1

Je ne suis pas sûr de comprendre la question. Si vous êtes nouveau à NHibernate, jetez un oeil à la documentation avec le terme cascade. Ceci définit ce qui est persistant lorsqu'un objet contenant d'autres doit être sauvegardé.