سؤال

خطوات لإعادة إنتاج الخطأ:

إنشاء جدول الجدول (person_id int (11) ليس NULL AUTO_INCREMENT ، FirstName varchar (20) الافتراضي الفارغ ، الاسم الأخير varchar (20) الفارغ الفار 36 charset الافتراضي = latin1

أدخل في الشخص (FirstName ، LastName ، العمر) قيم ('myName' ، null ، null) ؛ حدد last_insert_id () على أنه newID

    Person personObject = new Person();
    personObject.Firstname= "myname";
    personObject.Add();
    Response.Write(personObject.PersonId);

الإخراج "0 '

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

المحلول

هذا ليس خطأ بل خطأ من المحتمل أن يحدث إذا قمت بتغيير اتفاقية التسمية للأعمدة والجداول -> Topascalcase. بشكل افتراضي ، يتم نسخ اسم العمود/الجدول بالطريقة التي يتم تعريفها على قاعدة بيانات MySQL. مما يجعل هذا قبيح

إبداعي

person personObject = new person()
personObject .person_id = 1;
personObject .first_name = "hello";
personObject .Save();

ما أحب أن يحدث

Person personObject = new Person()
personObject.PersonId = 1;
personObject.FirstName = "hello";
personObject.Save();

سيكون هناك اثنان (~ 3 ، لا يمكن أن نتذكر الآن) المشكلات الرئيسية في قلب دون الصوت بعد تغيير القالب الافتراضي لإنشاء الأسماء التالية باستخدام فئة Subsic's Soundector.

يجب تغيير انعكاس الخصائص المطلوبة للحصول على التحديثات/الإدراج على مثال:

//from
item.GetType().GetProperty(tbl.PrimaryKey.Name);
//to
item.GetType().GetProperty(Inflector.ToPascalCase(tbl.PrimaryKey.Name));

يجب إرجاع أسماء الأعمدة إلى خاصيةها الأصلية عند القيام بإدراج مثال:

//from
GetColumn(key)
//to
GetColumn(Inflector.AddUnderscores(key))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top