سؤال

لدي تطبيق asp.net-mvc مع قاعدة بيانات العضوية الافتراضية.أقوم بالوصول إليه عن طريق ADO.NET Entity Framework.

الآن أريد نقله إلى IIS، ولكن ظهرت العديد من المشاكل.اضطررت إلى تثبيت SQL Server Management Studio وإنشاء قاعدة بيانات جديدة واستيراد جميع البيانات من ملف .MDF السابق هناك.الشيء الوحيد المتبقي (على حد علمي) هو التغيير إلى سلسلة الاتصال.ومع ذلك، ليس لدي خبرة حقيقية في هذا الأمر وأستمر في الحصول على الكلمة الرئيسية غير مدعومة:'مصدر البيانات'.استثناء.هنا سلسلة الاتصال الخاصة بي:

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

أي أفكار، ما هو الخطأ؟

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

المحلول

ما لديك هو سلسلة اتصال ADO.NET صالحة - ولكنها كذلك لا سلسلة اتصال Entity Framework صالحة.

ستبدو سلسلة اتصال EF كما يلي:

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

أنت في عداد المفقودين كل metadata= و providerName= العناصر الموجودة في سلسلة اتصال EF الخاصة بك......لديك في الأساس فقط ما هو موجود في provider connection string جزء.

يجب أن يؤدي استخدام مصمم EDMX إلى إنشاء سلسلة اتصال EF صالحة لك، في web.config أو app.config.

مارك

تحديث:حسنًا، أفهم ما تحاول القيام به:أنت بحاجة إلى سلسلة اتصال "ADO.NET" ثانية فقط لقاعدة بيانات مستخدم/عضوية ASP.NET.السلسلة الخاصة بك على ما يرام، ولكن اسم الموفر غير صحيح - يجب أن يكون "System.Data.SqlClient" - هذا الاتصال لا يستخدم ENTity Framework - لا تحدد "EntityClient" له إذن!

<add name="ASPNETMembership" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.SqlClient" />

إذا قمت بتحديد providerName=System.Data.EntityClient ==> إطار كيان سلسلة الاتصال (مع البيانات التعريفية = وكل شيء).

إذا كنت في حاجة وتحديد providerName=System.Data.SqlClient ==> مباشرة ADO.NET سلسلة اتصال SQL Server بدون كافة إضافات EF

نصائح أخرى

ويمكن أن تحدث هذه المشكلة عند الرجوع الملف web.config الخاص بك (أو app.config) سلاسل الاتصال عن طريق الرقم القياسي ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

وسلسلة الاتصال الصفرية ليست دائما واحدة في ملف التكوين الخاص بك كما يرث الآخرين افتراضيا من أخرى حتى كومة .

والنهج الموصى بها للوصول الاتصال بالاسم ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

وأو لمسح عنصر connnectionStrings في ملف التكوين الخاص بك أولا ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...

وكنت الحصول على نفس المشكلة.
ولكن هذا الرمز يعمل جيدا تحاول ذلك.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

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

حل:في الملف الذي يتم فيه الاتصال من خلال ملف web.config "add name="جهات"ConnectionString = XYZ" ، تأكد من أنك تشير إلى الاتصال الصحيح ، في حالتي كان علي القيام بذلك

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

اتصل بـ MyEntityFrameworkConnection عندما يلزم إنشاء الاتصال.

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;

ملحوظة:سيتم إنشاء الاتصال في ملف web.config تلقائيًا عند إضافة نموذج الكيان إلى الحل.

أعلم أن هذا منشور قديم ولكني حصلت على نفس الخطأ مؤخرًا، لذا فيما يتعلق بما يستحقه، إليك حل آخر:

عادةً ما يكون هذا خطأ في سلسلة الاتصال، يرجى التحقق من تنسيق سلسلة الاتصال الخاصة بك، ويمكنك البحث عن "سلسلة اتصال إطار عمل الكيان" أو اتباع الاقتراحات أعلاه.

ومع ذلك، في حالتي كانت سلسلة الاتصال الخاصة بي جيدة وكان سبب الخطأ شيئًا مختلفًا تمامًا، لذا آمل أن يساعد هذا شخصًا ما:

  1. أولاً كان لدي خطأ EDMX:كان هناك جدول قاعدة بيانات جديد في EDMX ولم يكن الجدول موجودًا في قاعدة البيانات الخاصة بي (الشيء المضحك هو الخطأ، لم يكن الخطأ واضحًا جدًا لأنه لم يظهر في EDMX أو نافذة الإخراج، وبدلاً من ذلك تم إخفاءه في الاستوديو المرئي في نافذة "قائمة الأخطاء" ضمن "التحذيرات").لقد قمت بحل هذا الخطأ عن طريق إضافة الجدول المفقود إلى قاعدة البيانات الخاصة بي.لكنني كنت مشغولًا بالفعل بمحاولة إضافة إجراء مخزن وما زلت أتلقى خطأ "مصدر البيانات"، لذا انظر أدناه كيفية حل المشكلة:

  2. خطأ في الإجراء المخزن:كنت أحاول إضافة إجراء مخزن وفي كل مرة أضفته عبر نافذة تصميم EDMX ظهرت لي رسالة خطأ "مصدر البيانات".كان الحل هو إضافة الإجراء المخزن فارغًا (احتفظت باسم proc المخزن وإعلانه ولكني حذفت محتويات proc المخزن واستبدلته بـ "select 1" وأعدت محاولة إضافته إلى EDMX).انها عملت!من المفترض أن EF لم يعجبها شيء ما داخل عملية التخزين الخاصة بي.بمجرد إضافة proc إلى EF، تمكنت بعد ذلك من تحديث محتويات proc في قاعدة البيانات الخاصة بي إلى ما أردته أن يكون ويعمل، وتم حل خطأ "مصدر البيانات".

غرابة

وكنت الحصول على نفس الخطأ، ثم تحديث سلسلة الاتصال بي على النحو التالي،

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

وحاول هذا فإنه سيتم حل مشكلتك.

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