SQL / .NET TableMeadapters - كيف يمكنني ذلك بقوة أعمدة محسوبة في قاعدة البيانات أو DataSet؟

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

سؤال

نستخدم الأعمدة المحسوبة في عدد قليل من جداول SQL Server 2005 التي ترجع دائما بيانات نوع معين (بت، Varchar (50)، إلخ ...).

يتم استهلاك هذه الجداول من خلال طبقة بيانات .NET باستخدام مجموعات بيانات وضغط مناشدة مكتوبة بشدة، ولكن نظرا لأن الأعمدة المحسوبة غير مقيدة بنوع معين (نعرف دائما نوع معين، ولكن يمكننا إرجاع أي شيء). NET لا يولد بقوة الأعمدة بدقة.

ثلاثة أسئلة هنا: - الأعمدة المتستلة تحقق عادة من أن السجلات ذات الصلة لها قيم محددة، أو إرجاع قيمة واحدة من مستند XML ذي صلة باستخدام XPath. يتم حساب الأعمدة الأداة المناسبة لهذا، أم أنها هناك طريقة أفضل لإرجاع هذه البيانات ذات الصلة من البيانات؟

  • تفتيش بلدي قل لا، ولكن هل من الممكن بقوة من نوع الأعمدة بقوة في قاعدة البيانات نفسها؟

  • هل هناك حل عبء داخل مصمم بيانات Visual Studio DataSet الذي من شأنه أن يسمح لي بتعيين الأنواع المناسبة والحفاظ عليها عبر تحديثات DataSet / TableDapter (نظرا لأن المصمم سيحصل على قاعدة البيانات لتحديث مخططه)؟

شكرا!

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

المحلول

في الاستعلامات التي تستخدمها لإرجاع هذه القيم، يمكنك استخدام وظيفة SQL Cast () لإلقاءها على أنها تكاثر نوع البيانات الذي تريده. أعتقد أن .NET يجب أن يتعرف على نوع البيانات المصبوب ووضع هذا النوع في DataSet.

نصائح أخرى

أولا، لديهم نوع.

ثانيا، سيقوم SQL Server بإخبار العملاء بالنوع إذا طلب العميل، ما إذا كان عميل API API C، عميل C #، عميل JDBC، إلخ. غير ذلك، لا يمكن للعملاء بشكل صحيح عن النوع.

ثالثا، يمكنك معرفة نوع ما لديهم من خلال النظر في صف المعلومات_schema.columns (أو Syscolumns) للأعمدة المحسوبة.

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

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