شرح - what is entity framework in c#




EF6، تحميل كسول لا يعمل كما هو متوقع (2)

حاول تعريف العلاقة بين الكيانات. يجب أن تعمل إذا تم تمكين التحميل كسول الخاص بك.

باستخدام إف 6، يتم تعيين Lazy Loading Enabled إلى True في النموذج. في ما يلي مثال لمشكلتي:

var agent = context.AgentDetail.Where(a => a.Agent.GroupCode == "1234");

تشغيل التي ستعود 5 النتائج. إذا بعد أن أركض (لغرض الاختبار فقط)

var code = agent.FirstOrDefault().Agent.GroupCode;

أحصل على استثناء مرجعي نول لأن Agent null .

إليك كياناتي:

    public partial class AgentDetail : Entity<int>
    {
        public Nullable<System.DateTime> Date { get; set; }
        public string Name { get; set; }
        public decimal Balance { get; set; }
        ...

        public virtual Agent Agent { get; set; }
    }

    public partial class Agent : Entity<int>
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Agent()
        {
            this.AgentAspNetUsers = new HashSet<AgentAspNetUsers>();
            this.AgentDetail = new HashSet<AgentDetail>();
        }

        public string GroupCode { get; set; }
        ...

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<AgentAspNetUsers> AgentAspNetUsers { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<AgentDetail> AgentDetail { get; set; }
    }

كيف يمكن أن تعطيني 5 النتائج في الاستعلام الأول، ثم؟ لا أستطيع معرفة ما هو الخطأ هنا، أي مساعدة سيكون موضع تقدير.


من متطلبات إنشاء بوكو بروكسيز

  1. يجب أن يتم الإعلان عن فئة بيانات مخصصة مع إمكانية الدخول العام.
  2. يجب ألا تكون فئة البيانات المخصصة مختومة
  3. يجب ألا تكون فئة البيانات المخصصة مجردة
  4. يجب أن تحتوي فئة البيانات المخصصة على منشئ عام أو محمي لا يحتوي على معلمات. استخدم منشئ محمي بدون معلمات إذا كنت تريد استخدام طريقة كريتوبجيكت لإنشاء بروكسي للكيان بوكو. لا يضمن استدعاء الأسلوب كريتوبجيكت إنشاء بروكسي: يجب أن يتبع فئة بوكو المتطلبات الأخرى الموضحة في هذا الموضوع.
  5. لا يمكن للفئة تنفيذ واجهات إنتيتيويثشانجيتراكر أو إينتيتيويثريلاتيونشيبس لأن الطبقات الوكيل تنفيذ هذه الواجهات.
  6. يجب تعيين الخيار بروسيكريتيونينابلد إلى ترو.
  7. يجب أن يتم الإعلان عن كل خاصية التنقل كعام، ظاهري (قابل للتغيير في فيسوال باسيك)، وليس مختومة (نوتوفيريديابل في فيسوال باسيك) الحصول على أسيسور. يجب أن يكون خاصية الملاحة المعرفة في فئة البيانات المخصصة خاصية الملاحة المقابلة في النموذج المفاهيمي. لمزيد من المعلومات، راجع تحميل بوكو الكيانات ذات الصلة.

تحقق من هذه النقاط على الفصول الدراسية. في الخاص بك رمز التعليمات البرمجية AgentDetail العامة / المحمية منشئ.





entity-framework-6