الغرض من العناصر التي تحتوي على connectionStringName تعيين على AbsqlServer؟

StackOverflow https://stackoverflow.com/questions/1022489

سؤال


1) عناصر التكوين الافتراضية لها ConnectionStringName تعيين السمة إلى FOCALSQLSERVER, ، وعلى حد علمي ، تشير هذه السمة إلى الاتصال المحدد في عنصر في machine.config ملف.

أ) أفترض أن سلسلة الاتصال هذه تشير إلى قاعدة البيانات ASPNETDB.MDF?!

ب) أفهم ASPNETDB.MDF يستخدم في الحالات التي لا ننشئ فيها بشكل يدوي قاعدة بيانات العضوية أو الملف الشخصي (عن طريق الاتصال ASPNET_REGSQL ) ، لكنني ما زلت لا أفهم الغرض من عناصر التكوين ConnectionStringName تعيين السمة إلى FOCALSQLSERVER تعيين؟ وهي متى ولماذا يحتاجون إلى الوصول إلى قاعدة البيانات هذه؟

ج) ما يحدث إذا قمنا بتعيين قاعدة بيانات العضوية يدويًا عبر ASPNET_REGSQL وبالتالي لا تستخدم ASPNETDB.MDF؟ كيف ستعرف عناصر التكوين أننا لا نستخدم ASPNETDB.MDF وبالتالي حاول بدلاً من ذلك الوصول إلى قاعدة البيانات التي أنشأناها؟


2) إذا أردنا FOCALSQLSERVER الدخول من machine.config للإشارة إلى بعض ملفات قاعدة البيانات الأخرى ، يمكننا القيام بما يلي:

      <connectionStrings>
        <remove name="LocalSqlServer" />
        <add name=”LocalSqlServer” ...  />
      </connectionStrings>

أنا أفهم أن الغرض من <remove> العنصر هو إلغاء أي عناصر معلنة مسبقًا بنفس الاسم ، ولكن في المثال أعلاه ، قمنا ببساطة بتغيير سمة الاتصال الموجود بالفعل ، وعلى هذا النحو machine.config ليس لديه اتصالان مع نفس الاسم ، فلماذا يجب علينا تضمين <remove> عنصر؟


شكرا

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

المحلول

من مقالة عنصر ConnectionStrings على MSDN:

تورت سلاسل الاتصال الواردة في ملف تكوين الأصل ، ما لم يتم استخدام العنصر الواضح في ملف تكوين الطفل. يتم تكوين عنصر ConnectionStrings الافتراضي التالي في ملف machine.config. رمز النسخ

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated
        Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User
        Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>

لذلك إذا لم يتم تعديل هذا القسم من ملف التكوين ، فلديه سلسلة الاتصال تلقائيًا.

نصائح أخرى

الاتفاقية المستخدمة هي واحدة من العديد من الذين كان من الممكن اختيارهم لإنجاز نفس المهمة ، لكن الأشخاص الذين كانوا في فريق ASP.NET في MS في ذلك الوقت هم حقًا الوحيدون الذين يمكنهم قول "لماذا" هذه المجموعة من الاتفاقيات تستخدم. أفهم أن الغرض من التكوين الحالي هو جعل الأمر سهلاً قدر الإمكان للمبتدئين للبدء. IE قم بتشغيل بعض المعالجات ، وقم بإنشاء قاعدة بيانات تلقائيًا مع إعدادات تم تكوينها مسبقًا ، و Drag-N-drop بعض عناصر التحكم في الأمان ولديها شيء للعمل معه. نظرًا لأن هذا تم تصميمه للمبتدئين ، فإن المطورين الأكثر خبرة يركضون في نفس مجموعة الأسئلة التي تطرحها الآن لأن البحث في كيفية تناسب القطع معًا ليس بسيطًا.

أحد الأشياء التي ستلاحظها في Machine.Config هو أن جميع مقدمي الخدمات (العضوية ، الأدوار ، الملف الشخصي ، إلخ) يستخدمون اسم سلسلة اتصال AcalSqlServer ، والذي يدعم سيناريو المبتدئين مرة أخرى. لذلك ، لاستخدام قاعدة البيانات الخاصة بك ، تحتاج إلى إزالة التعريف الافتراضي لـ FacalSqlServer وتحديد خاص بك. لا يوجد عنصر استبدال في تعريف ملف التكوين ، لذلك يجب عليك استخدام التسلسل إزالة/إضافة ، وهو المكافئ المنطقي. من خلال تغيير سلسلة الاتصال وترك اسمها كـ Abjolserver ، يتم توجيه جميع مقدمي الخدمات في Machine.Config إلى DB. يمنحك هذا تعريفات المزود الافتراضي في قاعدة البيانات الخاصة بك.

الآن ، إذا كنت ترغب في تخصيص تعريفات الموفر ، فيمكنك إضافتها إلى الويب الخاص بك. في هذه المرحلة ، يمكنك ترك شركة OcalsQlServer كسلسلة اتصال لتعريفات الموفر المخصص أو يمكنك إنشاء سلسلة التوصيل الخاصة بك ثم توجيه تعريفات مزودك المخصصة في سلسلة الاتصال الخاصة بك ولن تحتاج إلى القلق بشأن alcalsqlserver بعد الآن. إذا قمت بإزالة OcalSqlServer منك web.config ، فستحتاج إلى إضافة تعريفات مخصصة للمزود إلى الويب الخاص بك.

أتمنى أن يساعدك هذا،

جو

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