4 votes

Le constructeur par défaut est-il vraiment nécessaire pour que nhibernate fasse persister un objet ?

Pour une raison quelconque je ne veux pas laisser l'utilisateur créer une instance de l'objet, sans envoyer une propriété au constructeur mais comme je sais que l'objet devrait avoir un constructeur par défaut et donc il serait possible de créer une instance sans envoyer la propriété requise. Y a-t-il un moyen d'éviter ce problème ? et si oui, cela a-t-il un effet secondaire ?

6voto

Sunday Ironfoot Points 5625

Il suffit d'utiliser un constructeur par défaut protégé :

public class Product
{
    protected Product() { }

    public Product(Category category)
    {
        this.Category = category;
    }
}

5voto

danyolgiax Points 5460

"NHibernate autorise un constructeur par défaut privé pour les objets de valeur, mais pour les entités, vous aurez besoin d'un constructeur par défaut public ou protégé, car private n'est pas suffisant."

Ici, vous pouvez trouver quelque chose :

https://github.com/davybrion/companysite-dotnet/blob/master/content/blog/2009-10-why-nhibernate-entities-need-a-public-or-protected-parameterless-constructor.md

Ici, il y a une expérience pour travailler sans constructeur :

http://kozmic.net/2011/03/20/working-with-nhibernate-without-default-constructors/

Il s'agit d'un exemple de travail avec l'injection de dépendances :

http://nhibernate.info/blog/2008/12/12/entities-behavior-injection.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X