2009-09-19 5 views
0

Le projet sur lequel je travaille a une logique commerciale et de données très complexe. J'ai environ 90 tables et 250 procédures stockées dans ma base de données.Exemple du monde réel complexe de Nhibernate

J'ai vu des échantillons très basiques sur Nhibernate à travers lesquels les opérations sont effectuées sur base de données. Je veux juste savoir si nous avons une logique complexe énorme alors comment pouvons-nous utiliser nhibernate.

Actuellement, dans certains scénarios, je gère la logique métier au niveau de la procédure stockée, donc s'il y a un léger changement, il suffit de faire quelques changements dans la procédure stockée pour que les choses me conviennent. Mais si j'utilise Nhibernate, comment puis-je travailler avec des procédures stockées et créer des situations complexes pour moi. Puis-je obtenir un exemple de code en C# qui utilise nhibernate et contient des scénarios du monde réel complexes.

+0

En général, la mise en œuvre de la logique métier dans les procédures stockées n'est pas recommandée. Cela dit, NHibernate prend toujours en charge votre scénario. –

Répondre

1

Non seulement les procédures stockées peuvent être appelées via NHibernate, mais l'ORM vous permet d'appeler ces procédures de telle sorte que leurs jeux de résultats soient automatiquement convertis en types d'entités spécifiques.

Voir http://softwaredevscott.spaces.live.com/blog/cns!1A9E939F7373F3B7!241.entry pour un exemple. Plus précisément, vous devez utiliser l'élément <sql-query> des fichiers de mappage de NHibernate pour configurer le nom, les paramètres d'entrée et le type de retour pour votre procédure stockée. Vous pouvez ensuite faire référence à cette procédure stockée dans le code par le nom que vous avez fourni.

Je ne crois pas que vous puissiez appeler des procédures stockées nues. Ils doivent avoir un nom quelque part dans les fichiers de mapping de NHibernate. En ce qui concerne la complexité, je suis complètement à votre écoute pour relever les défis auxquels vous êtes confrontés. Je fais un test de NHibernate dans mes propres projets pour mesurer ses performances et dans quelle mesure il vous enveloppe lorsque vous avez besoin de flexibilité. Jusqu'à présent, je n'ai eu aucun problème.

3

Un ORM tel que l'objectif principal de NHibernate est de résumer l'accès à la base de données à partir de l'application et de la rendre indépendante de la base de données. Avoir une logique métier dans la procédure stockée signifie que l'utilisation d'un ORM n'apportera aucune valeur. Utiliser ADO.NET simple serait plus simple et bénéfique. À mon humble avis en utilisant NHibernate pour appeler SQL ou procédures stockées est inutile. Vous mettez juste une couche supplémentaire à votre application qui n'apporterait aucune valeur. Toutefois, si vous éloignez la logique métier de la base de données et que vous disposez d'un modèle d'objet sympa, un ORM peut être très utile pour mapper ce modèle aux tables de base de données.

+0

Je suis d'accord avec vous, mais je crois qu'un ORM s'occupera de 95% de vos besoins d'accès aux données. Cependant, il existe des scénarios dans lesquels vous souhaitez optimiser au-delà de ce qu'un ORM peut offrir. Il est donc utile de pouvoir faire appel à des fournisseurs de services lorsque le besoin s'en fait sentir. –

+0

Je pense que 250 procédures stockées !! Comme dans le cas du PO, ce n'est pas «quand le besoin s'en fait sentir», c'est juste la façon dont l'application est conçue. "quand le besoin s'en fait sentir" serait si vous aviez par exemple quelques procédures stockées héritées que vous devez appeler dans certains cas rares. C'est pourquoi j'ai proposé d'utiliser ce qui est le mieux dans ce cas, c'est ADO.NET. –

Questions connexes