2009-09-23 6 views
7

मेरे पास SQL ​​वर्गों के लिए linq का एक सेट है और .NET जावास्क्रिप्टसेरियलाइज़र का उपयोग करके JSON में क्रमबद्ध किया गया है।LINQ से SQL कक्षाओं को क्रमबद्ध करते समय परिपत्र संदर्भ अपवाद

हालांकि, जैसे ही मैं एक संबंधित तालिका पर रिकॉर्ड जोड़ता हूं, serialization "परिपत्र संदर्भ अपवाद" फेंकता है। Aaarggh!

यह विस्तार से वर्णन किया गया है here

मैं कुछ ही विकल्प

  • कोई रिश्ते इस प्रकार वृत्तीय संदर्भ
  • nulling संघों द्वारा वृत्तीय संदर्भ कटाव से बचने के साथ एक कक्षा में कनवर्ट एसक्यूएल वर्ग के लिए LINQ है - मैं इस पर विचार नहीं है एक असली विकल्प
  • ScriptIgnoreAttribute (किसी भी तरह) का उपयोग करें। मैं आसानी से इसे लागू नहीं कर सका क्योंकि गुण जेनरेटेड क्लासेस में हैं और LINQ से SQL को स्वचालित रूप से दोस्त वर्गों का सम्मान नहीं करता है
  • JSON.NET का उपयोग करें और किसी भी तरह से रिश्तों में चलने की कोशिश कर रहे सीरियलाइज़र को रोकने के लिए गुणों + दोस्त वर्गों का उपयोग करें।

क्या किसी और को इसका सामना करना पड़ा है? यदि संभव हो तो मैं वास्तव में अंतिम विकल्प पसंद करूंगा लेकिन मुझे नहीं पता कि यह कैसे करें।

किसी भी मदद की बहुत सराहना कर रहा है

उत्तर

8

Json.NET के नवीनतम संस्करण को परिपत्र रिश्तों serializing समर्थन करता है। सहायता में Preserving Object References देखें।

+2

एक ब्लॉग पोस्ट सेटअप का ब्यौरा लिखा: http://www.johnnycode.com/blog/2012/04/10/serializing-circular-references-with-json-net-and-entity-framework/ –

1

जेम्स समाधान मेरी समस्या का हिस्सा हल 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 
       })); 
संबंधित मुद्दे