سؤال

جزء من المشروع أنا أعمل حاليا لدى مجموعة من أربعة جداول syndicatable الإجراءات.طاولة واحدة هي قاعدة مجردة الثلاثة الأخرى, و كل جدول يمثل في EF نموذج مثل ذلك:

EF نموذج -- الإجراءات http://chris.charabaruk.com/system/files/images/EF+Model+Actions.png

هناك نوعان من المشاكل التي أنا حاليا التي تواجه ذلك.المشكلة الأولى هي أن Actor (إشارة إلى User) ، Subject (في إشارة إلى الكيان الطبقة المرتبطة بكل نوع من العمل) هي null في فرعية ، على الرغم من قاعدة البيانات المقترنة الأعمدة بعقد ساري المفعول مفاتيح الصفوف في الجداول المرتبطة.في حين لا يمكن الحصول على المفاتيح عن طريق ActorReference و SubjectReference هذا بالطبع يتطلب إعداد جديد EF سياق الاستعلام عن الكائنات المشار إليها (كما FooReference.Value هو أيضا باطل).

المشكلة الثانية هي أن متبادلة نهاية العلاقة بين إجراءات ملموسة الطبقات ذات كيان الطبقات تتحول دائما لا شيء.على سبيل المثال ، Task.RelatedActions, التي ينبغي أن تعطيني كل TaskAction الكائنات حيث Subject يشير إلى المهمة خاصة الكائن الذي RelatedActions ويسمى ، هو تماما خالية من الكائنات.مرة أخرى صالحة الصفوف الموجودة في قاعدة البيانات Entity Framework ليست مجرد وضعها في الكائنات و تسليمها لي.

أحد يعرف ما هو الخطأ الذي أفعله و ما يجب القيام به لجعل هذا العمل ؟

تحديث: يبدو أن أيا من العلاقة خصائص تعمل في نموذج الكيان أكثر من ذلك على الإطلاق.WTF...

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

المحلول

أعتقد أن المشكلة التي تعاني هنا هو أن افتراضيا EF لا يتم تلقائيا تحميل الكيانات ذات الصلة.إذا قمت بتحميل كيان جمع أو الإشارة إلى الجهات ذات الصلة سوف تكون فارغة إلا إذا كنت تفعل واحدة من الأمور التالية:

1) استخدام حريصة التحميل من أجل استرداد الخاص بك الكيان الرئيسي الخاص بك ذات الصلة الكيان في استعلام واحد.للقيام بذلك, تعديل الاستعلام الخاص بك عن طريق إضافة مكالمة تتضمن طريقة.في عينة أعلاه, يمكنك استخدام الاستعلام التالي:

from a in context.Actions.Include("Actor") select a

وهذا من شأنه استرداد كل من الإجراءات ذات الصلة الممثل الأسلوب.

2) استخدام صريحة تحميل كسول لاسترداد ذات كيان عندما كنت في حاجة إليها:

action1.ActorReference.Load()

في إصدار EF التي سوف السفينة مع .Net 4.0 سيكون لديك أيضا خيار الإضافية التالية:

3) تشغيل الضمني تحميل كسول بحيث الجهات ذات الصلة تلقائيا يتم استردادها عند الرجوع إلى التنقل من مكان الإقامة.

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