تعيين اسم قاعدة البيانات ديناميكيا في LINQ إلى SQL
-
07-07-2019 - |
سؤال
وأستخدمه LINQ إلى SQL للاتصال قاعدة البيانات من طلبي. وأنا عندما تغير البيئة من الإنتاج إلى التدريج، I يمكن تحديث سلسلة الاتصال بي في الملف web.config. ولكن هناك واحد أكثر قيمة ولست بحاجة لتحديث عندما تتغير البيئة. وهذا هو اسم قاعدة البيانات. في LINQ إلى ملف مصمم SQL، ذكر اسم قاعدة البيانات كما سمة مثل -
[System.Data.Linq.Mapping.DatabaseAttribute(Name="somedbname")]
وكيف يمكنني التقاط قيمة اسم حيوي من بعض الملفات التكوين؟
وهو محل تقدير حقا أي مساعدة.
المحلول
وكما هو مذكور على http://msdn.microsoft. كوم / EN-US / مكتبة / system.data.linq.mapping.databaseattribute.name.aspx
و"يستخدم إلى قاعدة فقط إذا كان الاتصال نفسه لا يحدد اسم قاعدة البيانات." حتى تتمكن من حذف هذه السمة وكل شيء على ما يرام ستعمل العمل!
نصائح أخرى
ولقد استعملت فئة مجمع لتوفير السياق على غرار
public DataContext Context = new DataContext(SqlConnectionString); //much simplified
وأنا ثابت على هذه المشكلة عن طريق تحرير ملف .dbml خارج من Visual Studio (لا يبدو أن مصمم للسماح بالوصول إلى DatabaseAttribute) والتخلص من خاصية اسم هنا:
<Database Name="BadName" Class="OutputDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
و(لاحظ أن الإجابة مقبولة لم تعد صحيحة: هذه السمة تم تجاوز سلسلة الاتصال بلدي)