سؤال

لدي مجموعة من LinQ إلى فصول SQL وتسلسلتها إلى JSON باستخدام .NET JavascriptSerializer.

ومع ذلك، بمجرد إضافة سجل على طاولة ذات علاقة، يلقي التسلسل "استثناء مرجعي دائري". aaarggh!

هو موصوف بالتفصيل هنا.

لدي بعض الخيارات

  • تحويل LinQ إلى فئة SQL إلى فئة بدون علاقات، وبالتالي تجنب المرجع الدائري
  • قم بتخصيص المرجع الدائري بواسطة جمعيات Nulling - لا أعتبر هذا خيارا حقيقيا
  • استخدم Scriptignoreattribute (بطريقة أو بأخرى). لم أستطع تطبيق هذا بسهولة لأن الخصائص موجودة في الفئات الناتجة و LINQ إلى SQL لا تكرم فصول الأصدقاء
  • استخدم json.net واستخدامها بطريقة أو بأخرى سمات + فصول الأصدقاء لإيقاف المسلح الذي يحاول المشي عبر العلاقات.

هل تعرض اي احد اخر لهذا؟ أود حقا الخيار الأخير إذا كان ذلك ممكنا لكنني لا أعرف كيفية القيام بذلك.

أي مساعدة يحظى بتقدير كبير

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

المحلول

أحدث إصدار من JSON.NET يدعم العلاقات الدائرية التسلسلية. الدفع مراجع كائن الاحتفاظ في التعليمات.

نصائح أخرى

رابط إضافي للإجابة المقبولة

مساعدة JSON.NET، مع الحفاظ على مراجع الكائن (مع مثال)

يبدو أنه يعمل بشكل جيد مع LinQ إلى SQL

حل جيمس حل جزء من مشكلتي. كنت بحاجة لاستبعاد أنواع قائمة معينة داخل الكائن. لحل مشكلتي، قمت بنسخ أجزاء الكائن التي أحتاجها. وفيما يلي مثال على ذلك.

var DB = new DBDataContext();
            var lUsers = new List<User>();
            DB.Users.ToList().ForEach(x => lUsers.Add(new User()
                {
                    ID = x.ID,
                    FIRST_NAME = x.FIRST_NAME
                }) );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top