संपादित -2: अनुसंधान के घंटे और गूगल बैंगनी मोड़ पर लगभग हर OData संबंधित लिंक के बाद, मुझे पता चला है कि 'गहरे आवेषण' (link) की अवधारणा में मौजूद है ओडाटा विनिर्देश। तो आखिरकार, जो भी मैं कर रहा हूं, लिंक के बिना भी काम करना चाहिए। क्या किसी को यह पता है कि माइक्रोसॉफ्ट ओडाटा क्लाइंट पर इसे कैसे सक्षम किया जाए? क्या वहां कोई अन्य ओडाटा ग्राहक हैं जो उस अवधारणा का समर्थन करते हैं?सम्मिलित करना संस्थाओं
संपादित करें: शायद यह गलत दृष्टिकोण है, इसलिए कृपया मुझे बताएं कि मैं इसे पूरी तरह गलत कर रहा हूं। बचाने में सक्षम नहीं है वास्तव में हमारी प्रगति को अवरुद्ध कर रहा है!
मुझे ओडाटा v3 के साथ कोई समस्या है। मेरे पास कक्षा Associate
है जिसमें एक आवश्यक Address
है। जब मैं एक नया एसोसिएट पोस्ट करने का प्रयास करता हूं, तो यह Address
संपत्ति शून्य के कारण विफल रहता है (EF6 विदेशी कुंजी उल्लंघन के साथ DbUpdateException फेंकता है)।
public class Associate
{
public int Id { get; set; }
[Required, StringLength(100)]
public string Name { get; set; }
[Required, StringLength(50)]
public string Role { get; set; }
public bool IsMailReceiver { get; set; }
public bool IsLegalRepresentative { get; set; }
[ForeignKey("AddressId")]
public virtual Address Address { get; set; }
public int AddressId { get; set; }
}
मैं माइक्रोसॉफ्ट OData ग्राहक का उपयोग, और निम्नलिखित तरीके से सहयोगी जोड़ने का प्रयास:: मेरी Associate
वर्ग इस तरह दिखता है
var associate = new Associate { /* ... */ };
context.AddObject("Associates", associate);
context.AddObject("Addresses", associate.Address);
/* UI fills associate data */
context.SetLink(associate, "Address", associate.Address);
context.UpdateObject(associate);
context.UpdateObject(associate.Address);
/* at this point the associate has the address set! */
context.SaveChanges(); // << Exception
सर्वर पर, नियंत्रक में, एसोसिएट आता है हालांकि, विदेशी कुंजी के बिना। जब मैं फ़िडलर साथ पोस्ट अनुरोध का निरीक्षण किया, मैं देख रहा हूँ क्यों:
{
"odata.type" : "xxx.Data.Entities.Associate",
"AddressId" : 0,
"Id" : 0,
"IsLegalRepresentative" : false,
"IsMailReceiver" : false,
"Name" : "John Doe",
"Role" : "Father"
}
पता नहीं फैलता है, भले ही ग्राहक पर उत्पन्न वर्ग एक Address
संपत्ति है।
मैं इस समस्या को कैसे हल कर सकता हूं?
आप इकाई की रूपरेखा मॉडल सही ढंग से करने के लिए AddressId संपत्ति टाई करने के लिए स्थापित किया है ahvbe है पता इकाई? अक्सर मैं ऐसा करना भूल जाता हूं इसलिए मेरी संपत्ति विदेशी कुंजी से सही ढंग से लिंक नहीं होती है। –
@TheSenator पता भी नया है, यही कारण है कि मुझे सर्वर की तरफ भौतिक वस्तु की आवश्यकता है, इसलिए ईएफ बाकी का प्रबंधन कर सकता है (जैसा कि यह बहुत अच्छा करता है)। – LueTm
आप ग्राहक से JSON POST अनुरोध कैसे भेजते हैं? अधिक सटीक, आप ग्राहक पक्ष पर एसोसिएट/पता कैसे क्रमबद्ध करते हैं? – nXu