كيف يمكنك أن تستمر بنية شجرة إلى جدول قاعدة بيانات مع لصناعة السيارات في تزايد باستخدام معرفات ADO.NET DataSet و DataAdapter

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

  •  08-06-2019
  •  | 
  •  

سؤال

لدي المرجعي الذاتي دور الجدول الذي يمثل بنية شجرة

ID [INT] AUTO INCREMENT
Name [VARCHAR]
ParentID [INT]

أنا باستخدام ADO.NET DataTable و DataAdapter لتحميل وحفظ القيم إلى هذا الجدول.يعمل هذا إلا إذا كنت إنشاء الأطفال من الصفوف الموجودة.إذا كنت جعل الطفل التوالي ، ثم جعل الطفل هذا الطفل ، ثم تحديث هوية مؤقتة القيمة الناتجة عن DataTable يجري في ParentID العمود.لدي البيانات التالية بخصوص تعيين:

dataset.Relations.Add(New DataRelation("RoleToRole",RoleTable.Columns("ID"), RoleTable.Columns("ParentID")))

و عندما كنت جعل الطفل الجديد الصفوف في DataTable أسميه SetParentRow طريقة

newRow.SetParentRow(parentRow)

هل هناك شيئا ما يجب القيام به للحصول على هوية الجيل للنشر بشكل متكرر عندما اتصل التحديث على DataAdapter?

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

المحلول

أنا لا أعرف ADO.net على وجه الخصوص, ولكن معظم ORMs لن تلقائيا إدراج معرف رقما قياسيا جديدا في العلاقة.عليك أن تلجأ إلى 2-الخطوة العملية:

  1. بناء وحفظ الوالدين
  2. بناء وإنقاذ الطفل مع علاقة الوالدين

السبب في أن هذا صعب ORMs لأنك قد تكون دائرية تبعيات و لن تعرف أي كائن هناك حاجة لخلق هوية الأولى.بعض ORMs ذكية بما فيه الكفاية لمعرفة تلك العلاقات حيث لا توجد مثل هذه دائرية التبعيات ، ولكن معظم لا.

نصائح أخرى

أنها لا تجعل أي فرق إذا ذهبت

newRow.SetParentRow(parentRow, RoleTable.Relations("RoleToRole"))

أقترح عليك إضافة ForeignKeyConstraint ، UpdateRule مجموعة تتالي.

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