VS2005/VS2008 بيانات المصمم ، إدراج صف في جدول يحتوي إنشاؤه تلقائيا guid العمود

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

سؤال

لدي بقوة كتبته DataTable إنشاؤها مع VS2005/VS2008 مصمم DataSet.

يحتوي الجدول على عمود المفتاح الأساسي هو guid الذي يحصل يسكنها SQL server.المشكلة هي عندما أريد إضافة صف (أو متعددة الصفوف) إلى DataTable ثم اتصل DataAdapter.التحديث طريقة (يمر في DataTable).عندما DataAdapter.التحديث ويسمى يمكنني الحصول على SQL استثناء أقول أنني لا يمكن إدراج فارغة في عمود المفتاح الأساسي.

كيف أخبر مصمم أن هذا هو إنشاؤه تلقائيا عمود وأنا لا ترغب في تقديم قيمة جديدة الصفوف ؟ أريد فقط القيمة التي تم إنشاؤها بواسطة SQL.

أنا في عداد المفقودين شيء هنا, أو هذا هو وجود قيود على البيانات مصمم ؟

أنا أعرف كيفية تحقيق هذا باستخدام LINQ to SQL, ولكن الحظ لا يكون ذلك في تصرفي هذا المشروع.

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

المحلول

ربما واحدة من هذه:

  • إذا كنت لا تحتاج إلى عمود في مجموعة البيانات الخاصة بك على التطبيق الخاص بك, ثم إزالته.
  • إذا كنت تريد العمود ولكن لا يهمني أن تعطيه قيمة ، ثم تغييره إلى السماح DBNull.
  • يمكنك دائما إيقاف القيد إنفاذ (ربما فكرة سيئة):DataSet.EnforceConstraints = false
  • يمكنك ملء العمود مع مركب الرئيسية التي لا تحصل على إرسالها إلى DB.

أول اثنين من الخيارات إذا كنت تريد راحة السماح مصمم على إبقاء الهيكل الخاص في تزامن مع قاعدة البيانات الخاصة بك ثم يمكنك إزالة عمود أو تسمح null برمجيا ، وربما بجوار "// هاك:"التعليق شرح السبب.

نصائح أخرى

أنت problably باستخدام NEWID DEFAULT (ا) في جهاز تعريف جدول ملقم SQL وبالتالي فإن مشكلة قد تكون أن المصمم الإدراجات لا يرى هذا العمود كما يتم إنشاؤه تلقائيا.

وربما توليد GUID في رمز التطبيق الخاص بك يمكن أن يكون حلا؟ إذا لم يكن كذلك، ثم هل يمكن تعيين قيمة افتراضية فيكم الإدراجات ولكن بعد ذلك ربما كنت يجب أن تتغير أيضا البيانات DataAdapter وإدراج / تحديث بحيث لا يحصل إدخال هذه القيمة الافتراضية في جدول SQL Server.

ويمكن أيضا أن يكون هناك بعض الحلول الأخرى التي أنا لست على علم ...

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