سؤال

أحاول تمديد كيان LINQ إلى SQL مع بعض الخصائص الإضافية. هذه خصائص "محسوبة" بناءً على البيانات من عرض SQL الأساسي. على سبيل المثال ، فكر في وجود تاريخ ميلاد ، والذي يستخدم لحساب حقل العمر الممتد.

حاولت تمديد فصل الكيان الخاص بي عن طريق توسيع طريقة Onloaded ().

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

راجعت بعضًا من فصول كيان LTS الأخرى ولديهم نقاط تمديد هذه. الفرق الوحيد الذي أراه هو أن الشخص بدونه يتم تحميله من عرض SQL ، بدلاً من جدول. هل هناك طريقة لربط حدث "محمّل" عند التحميل من عرض SQL؟

تيا!

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

المحلول

لقد وجدت أنه لم يكن لدي مفتاح أساسي محدد لفئة كيان LINQ-to-SQL. أعتقد بدون مفتاح أساسي محدد ، لا توجد طرق تمديد تم إنشاؤها في فئة الكيان. بمجرد تحديد مفتاح أساسي في تعريف فئة LTS الخاص بي (من خلال المصمم) ، تمكنت من تمديد الحدث onloaded ().

نصائح أخرى

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

إليك مثال على النمط:

public partial class [The Name of the Entity]
{
   public int Age
   {
      get
      {
         return CalculateAge(this.DateOfBirth);
      }
   }
}

إليك بعض المنطق على كيفية حساب العمر (المصدر: geekpedia)

public static int CalculateAge(DateTime BirthDate)
{
    int YearsPassed = DateTime.Now.Year - BirthDate.Year;
    // Are we before the birth date this year? If so subtract one year from the mix
    if (DateTime.Now.Month < BirthDate.Month || 
          (DateTime.Now.Month == BirthDate.Month && DateTime.Now.Day < BirthDate.Day))
    {
        YearsPassed--;
    }
    return YearsPassed;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top