تجاهل خصائص الطبقة قراءة فقط عند استخدام DataContext.ExecuteQuery

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

سؤال

وكيف يمكنني معرفة سياق بيانات LINQ إلى تجاهل إما خصائص معينة، أو كافة الخصائص للقراءة فقط، عند الربط نتيجة تعيين إلى كائن؟

وأنا أعمل مع بعض التصريحات T-SQL التي يصعب التعبير عن استخدام LINQ، لذلك أنا باستخدام طريقة ExecuteQuery من سياق البيانات لتمرير على التوالي T-SQL إلى قاعدة البيانات.

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

وهذا ما أفعله الآن. وهي تعمل، لكنها تمتص:

public bool IsPaidInFull {
    get { return NetTotal <= 0m; }
    set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
هل كانت مفيدة؟

المحلول

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

وأيضا، هل يمكن أن تذهب الطريق / جافا المدرسة القديمة باستخدام وظائف جالبة بدلا من الخصائص. منطقي getIsPaidInFull الجمهور () {العودة NetTotal <= 0M؛}.

وأو هل يمكن أن يتلاعب تنفيذ خصائص للقراءة فقط في فئة الأطفال الموروثة، ولكن هذا قد يعرض جميع أنواع القضايا النوع.

نصائح أخرى

public bool IsPaidInFull
{
    get { return NetTotal <= 0m; }
    private set { ;}
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top