سؤال

أحاول مجردة من كل قاعدة البيانات رمز إلى مكتبة منفصلة ومن ثم استخدام تلك المكتبة في كل قانون بلدي.جميع اتصالات قاعدة البيانات تتم باستخدام كتبته TableAdapters ذلك عن طريق سحب وإسقاط في مجموعات البيانات في VS2005, استخدام سلسلة اتصال من appSettings.

المشكلة أنني لم أكن قادرة على حل هذا .صافي لا تنتشر المكتبات appSettings إلى المشاريع الأخرى التي تستخدم ذلك.

باختصار لدي قاعدة بيانات طبقة المكتبة ، MyProgram.DbLayer ، والذي يستخدم من قبل مشاريع أخرى مثل MyProgram.العميل الخ.عندما كان جميع البيانات في .العميل سلسلة_أحرف_الاتصال كان في MyProgram.العميل.exe.config بحيث لا يمكن تغييره بعد بناء.عندما انتقلت إلى MyProgram.DbLayer هذا الإعداد ليست متوافرة بعد أن بناء الثنائيات.

تحرير:يبدو أن مسألة أعم مع ApplicationSettings.

ما لاحظته هو أنه إذا كنت يدويا إضافة إعداد تستخدم فقط في مكتبة سيكون تقرأ بشكل صحيح.الشيء الوحيد الذي أحتاجه الآن هو الإعداد تلقائيا في .config كذلك.

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

المحلول

AppSettings/ConnectionStrings سوف يكون دائما قراءة من حاليا تشغيل تجمع التطبيقات.

هذا يعني:

إذا كان لدي A.exe التي لديها فئة DAL.cs.الدال.cs يقرأ سلسلة اتصال من التكوين ، فإنه يعود "abc" كما هو متوقع.

ثم نقل الدال.cs إلى المشروع الخاص بك ، وبالتالي ، خاصة بها الجمعية.وأنا يمكن أن يكون لا يزال استدعاء سلسلة الاتصال من التطبيق.التكوين, ومع ذلك ، سوف تحتاج إلى "المضيف" الجمعية في تطبيق قيد التشغيل ، إضافة سلسلة الاتصال هذه التطبيقات التطبيق config.حتى أنا إنشاء التطبيق الجديد.التكوين و تحديد سلسلة الاتصال "xyz" في ذلك, عند تشغيله ، فإنه يعمل كما هو متوقع.

الآن إذا قمت بتغيير المرجع في A.exe المشروع إلى استخدام جديد DAL.dll, ماذا سلسلة الاتصال هل تعتقد أنه سيكون ؟ "xyz"?كلا!فإنه سيتم استخدام "abc" كما فعلت من قبل لأن ذلك لا يزال تكوينها في ملف تكوين التطبيق على A.exe.

أعرف أن هذا يعمل لأنني كنت مشترك الدال رمز عبر العديد من النوافذ و تطبيقات الويب.

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

تحديث التعليق التالي من العملية

من قبل "المضيف" أعني تطبيق تدعو رمز مشترك.هذا يمكن أن يكون ويندوز أو تطبيق ويب الاساس هو تطبيق السياق.

سوف تحتاج إلى إنشاء الإدخالات في ملفات التكوين لكل تطبيق يستخدم رمز مشترك.إذا فهمت سؤالك الأصلي (من الممكن تماما, لقد كان يوم طويل!) وكنت أتمنى أن مركزية التكوين كذلك, ثم سوف تحتاج إلى:

  • إنشاء بعض شكل من أشكال التخزين المركزي الأول (XML, DB, أيا كان).
  • تعزيز الخاص بك التعليمات البرمجية الشائعة إلى القيم الافتراضية لتمكينها من الاتصال إلى وحدة التخزين المركزية.
  • من هناك يمكن التعليمة البرمجية ثم تكوين نفسه على أساس المعلومات في مخزن التكوين.

ويساعد هذا الأمل :)

نصائح أخرى

إذا فهمت مشكلتك بشكل صحيح، فإنه يبدو وكأنه ستحتاج

1.) A سياق التطبيق المشترك لجميع المكالمات الوصول إلى البيانات

أو

2). وهناك طريقة مختلفة من الوصول إلى إعدادات التكوين

1: لف طبقة البيانات الخاصة بك في غضون الخدمة التي يتم تشغيلها ضمن سياق واحد (IIS، خدمة ويندوز، الخ)

2: لا تستخدم آلية إدارة التكوين التي يتم توفيرها لك. بدلا من ذلك استخدام ملفات العقارات في موقع معين.

لا تنسى على الرغم من أن سلسلة إعدادات التكوين من مختلف المستويات. على سبيل المثال ... إذا قمت بإضافة الإعداد في machine.config، ثم كل تطبيق يعمل على هذا الجهاز سوف تستخدم هذا الإعداد ما لم يتم استبداله عند مستوى أقل ... وهذا قد يكون وسيلة جيدة لإعداد إطار موحد داخل بك تكوين الملفات.

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