كان لدي مشكلة مماثلة مع Autofixture و entityframework منذ فترة. كان الحل الخاص بي هو إضافة امتداد إلى AutoFixture ، مما يتيح لك بناء SUT مع بعض العلامات. تم تبني هذا التمديد مؤخرًا في AutoFixture.
لكنني أفهم أن سؤالك لم يكن يتعلق بكيفية جعل تلقائيات Autofixture بناء هياكل البيانات العودية ، وهو أمر ممكن بالفعل ، ولكن كيفية إنشاء نماذج المجال دون عودة.
أولاً ، لديك هياكل شجرة أو رسم بياني. هنا أي شيء سوى العودية يعني عدم التوجيه من خلال معرفات العقدة الفضفاضة. بدلاً من تحديد الارتباط ، يجب عليك اجتياز الاستعلام عن طريق الأشجار أو ذاكرة التخزين المؤقت كل شيء وتجريره عن طريق البحث في العقدة ، والذي قد يكون غير عملي اعتمادًا على حجم الأشجار. هنا من المريح للغاية جعل EF القيام بالعمل من أجلك.
الهيكل المشترك الآخر هو بنية ملاحية ثنائية الاتجاه مماثلة لسيناريو المستخدم / اللعبة. هنا لا يكون من غير المريح تقليم تدفق التنقل إلى اتجاه واحد. إذا حذفت اتجاه واحد ، على سبيل المثال من اللعبة إلى الفريق ، لا يزال بإمكانك بسهولة الاستعلام عن جميع الفرق لمباراة معينة. لذلك: لدى المستخدم قائمة بالألعاب وقائمة الفرق. لدى الفريق قائمة بالألعاب. الألعاب ليس لها إشارة ملاحية إلى أي منهما. للحصول على جميع المستخدمين للحصول على لعبة معينة ، يمكنك كتابة شيء مثل:
var users = (from user in DataContext.Users
from game in user.Games
where game.Name == 'Chess'
select user).Distinct()