سؤال

جديد لNHibernate (بلدي التنصل). جئت عبر مقال مماثلة ومثيرة للاهتمام فيما يتعلق MVC ، ومع ذلك، I 'م أكثر فضولا حول ما هي أفضل الممارسات العامة لإدارة جلسات NHibernate في تطبيق ويب عام.

وجئت عبر المشروع الجحر ، ولكن أنا بدأت ندرك يبدو أن هناك عدد قليل من اتجاهات مختلفة لاتخاذ. أنا على علم انها ربما ليس في مصلحة بلدي ل إنشاء SessionFactory جديد في كل مرة أحتاج لمسة قاعدة البيانات، لذلك أنا مهتم في ما يقوم به المجتمع لإدارة الجلسات. هل تستخدم الجحر؟ هل التفاف SessionFactory الخاصة بك في المفرد؟

ودائما موضع تقدير كبير أي توجيه أو البصيرة.

هل كانت مفيدة؟

المحلول

لإجابة على سؤالك مباشرة، يجب أن يكون الكائن ISessionFactory الخاص بك عن المفردة. يمكنك إما القيام بذلك برمجيا (أي الاشارات في C # المفرد) أو عن طريق تكوين في حاوية اللجنة الاولمبية الدولية الخاصة بك.

وأما بالنسبة للجلسات، الجحر تبدو جيدة ولكن prodominant ونمط أبسط لدورات في تطبيقات الويب - OpenSessionInView - يأتي من خارج المربع، مع NHibernate 2.0.0. وهذا هو، رمز المكالمات الوصول إلى البيانات الخاصة بك ISessionFactory.GetCurrentSession() بدلا من ISessionFactory.OpenSession(). ثم تصرح كيف <م> الدورة الحالية يدار المصنع عن طريق تحديد تنفيذ ICurrentSessionContext. يوفر NHibernate اثنين من خارج مربع منها لalligning الدورة مع طلب ويب. هذا هو المعروف باسم "جلسات السياقية" في الوثائق.

ومما لا شك فيه قد يتطلب تطبيق ويب أكثر تعقيدا أكثر لفترة أطول المحادثات مع تحميل كسول معقدة الخ دائم، ولكن لتطبيق ويب قياسي NHibernate جلسات السياقية ينبغي أن يكون كافيا.

نصائح أخرى

وكتبت سلسلة من بلوق وظائف حول هذا الموضوع فيما يتعلق بأنماط الوصول NHibernate / يجيد NHibernate البيانات.

وأول أوصي هو مجردة بعيدا تفاعل NHibernate.

إنشاء مشترك عامة وتوسع NHiberate مستودع

وبعد ذلك للتعامل مع إدارة جلسة I تنفيذ "دورة في الأعمال المحادثة" النمط الذي بدلا من الاضطرار جلسة NH جود لحياة طلب صفحة واحدة وهذا هو واحد مشترك كان موجودا لسلسلة من الأحداث القول صفحة يسمح لك لجعل مجموعة من التعديلات على النموذج ومن ثم في نهاية إما تطبيق كل منهم بشكل دائم أو إلغائها.

المحادثة لكل عملية الأعمال باستخدام PostSharp واللجنة الاولمبية الدولية

إذا كنت ذاهبا لكتابة هذا المنصب اليوم، وأود أن لا تستخدم PostSharp مرة أخرى للتعامل مع رمز اوب (الجانب الموجه البرمجة) في مشروعي كنت إما استخدام <لأ href = "HTTP: //www.codeproject كوم / KB / CS / LinFuPart6.aspx "يختلط =" نوفولو noreferrer "> Linfu.AOP أو إطار آخر للقيام تفاعل اوب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top