البرمجة

تنفيذ إجراء مخزن في Web API باستخدام C#

عندما تقوم بتنفيذ الإجراء المخزن في قاعدة بيانات MS SQL Server كما هو موضح، تتلقى رسالة تعود بأن الإجراء المخزن قام بتعيين قيمة معينة للمتغير pppe لفتحه. الآن، تحاول تطبيق هذا الإجراء المخزن باستخدام Web API 2 ولغة C#. ومن الواضح أنك تواجه مشكلة حيث أن الدالة التي كتبتها تعيد مجموعة من السلاسل بينما تقوم بمحاولة إعادة نوع بيانات مختلف.

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

لتعديل دالتك، يمكنك استخدام الكود التالي:

csharp
public string spabrirturno(string posto, string turno, string data, string STATUS_TURNO) { STATUS_TURNO = null; // تنفيذ الإجراء المخزن والحصول على الرسالة المعادة return obj.abrir_turno(posto, turno, data, STATUS_TURNO).FirstOrDefault(); }

في هذا الكود، قمت بتغيير نوع البيانات المُعادة من IEnumerable إلى string، وذلك باستخدام FirstOrDefault() للحصول على أول عنصر في المجموعة المعادة. ومن ثم يتم تحويل هذا العنصر إلى نوع string. يجب ملاحظة أنه إذا لم يكن هناك عناصر في المجموعة، فسيتم إرجاع قيمة فارغة (null)، ويمكنك التحقق من ذلك في الكود الخاص بك حسب الحاجة.

المزيد من المعلومات

بالطبع، دعني أوضح بعض المعلومات الإضافية لمساعدتك في فهم السياق بشكل أفضل.

عندما تقوم بتنفيذ الإجراء المخزن في قاعدة البيانات باستخدام SQL Server، فإنك ببساطة تطلب من النظام تنفيذ تلك العملية المحفوظة وتمرير البيانات اللازمة لها كمعلمات. في حالتك، الإجراء المخزن يُسمى abrir_turno وهو يبدو أنه يتوقع أربعة معلمات: posto و turno و data و STATUS_TURNO.

من ناحية أخرى، عندما تقوم بتطوير Web API باستخدام C#، فإنك تعرف طريقة تنفيذ الدوال التي تمكن العملاء (مثل تطبيقات الويب أو الأجهزة الأخرى) من استدعاءها واستخدامها. في الكود الذي قدمته، يبدو أنك تحاول تنفيذ دالة باسم spabrirturno التي تقوم بتمرير معلمات إلى الإجراء المخزن abrir_turno واسترجاع الرد منه.

الخطأ الذي واجهته “cannot implicitly convert type IEnumerable to string” يحدث لأن الدالة التي كتبتها تحاول إرجاع مجموعة من السلاسل (IEnumerable) بينما تتوقع الدالة أن يتم إرجاع سلسلة واحدة (string).

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر