مشاكل الإرث مع إطار الكيان (جدول لكل نوع)
-
03-07-2019 - |
سؤال
جزء من المشروع أنا أعمل حاليا لدى مجموعة من أربعة جداول syndicatable الإجراءات.طاولة واحدة هي قاعدة مجردة الثلاثة الأخرى, و كل جدول يمثل في EF نموذج مثل ذلك:
EF نموذج -- الإجراءات http://chris.charabaruk.com/system/files/images/EF+Model+Actions.png
هناك نوعان من المشاكل التي أنا حاليا التي تواجه ذلك.المشكلة الأولى هي أن Actor
(إشارة إلى User
) ، Subject
(في إشارة إلى الكيان الطبقة المرتبطة بكل نوع من العمل) هي null
في فرعية ، على الرغم من قاعدة البيانات المقترنة الأعمدة بعقد ساري المفعول مفاتيح الصفوف في الجداول المرتبطة.في حين لا يمكن الحصول على المفاتيح عن طريق ActorReference
و SubjectReference
هذا بالطبع يتطلب إعداد جديد EF سياق الاستعلام عن الكائنات المشار إليها (كما Foo
Reference.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) تشغيل الضمني تحميل كسول بحيث الجهات ذات الصلة تلقائيا يتم استردادها عند الرجوع إلى التنقل من مكان الإقامة.
- داني