WCF

2012-01-17 16 views
5

साथ क्रमबद्धता POCO प्रॉक्सी जब मैं अपने सेवा चलाने मैं अपवाद है:WCF

सर्वर अनुरोध संसाधित करते समय एक त्रुटि आई। अपवाद संदेश 'सिस्टम के प्रकार पैरामीटर को क्रमबद्ध नहीं कर सकता है। डेटा.एन्टीटी। डायनामिकप्रॉक्सिस। कोसिकिक 4 सी 2 ...' (ऑपरेशन 'गेटकोसिक', अनुबंध 'आईसीओएसआईसीएस सेवा') क्योंकि यह सटीक प्रकार नहीं है 'Project.Domain.Entities.Cosik 'विधि हस्ताक्षर में और ज्ञात प्रकार के संग्रह में नहीं है। पैरामीटर को क्रमबद्ध करने के लिए, ServiceKnownTypeAttribute का उपयोग करके ऑपरेशन के लिए ज्ञात प्रकार संग्रह में प्रकार जोड़ें। '। अधिक जानकारी के लिए सर्वर लॉग देखें।

मैं डब्ल्यूसीएफ सेवाओं और इकाई फ्रेमवर्क के लिए नया हूं और मैं किसी भी मदद/सुझावों की सराहना करता हूं।

मैं इकाई फ्रेमवर्क 4.1 का उपयोग कर रहा हूं। का प्रयोग कोड-पहले मैं दो तालिकाओं के साथ डेटाबेस बनाया:

[DataContract(IsReference=true)] 
public class Cosik 
{ 
    [DataMember] 
    public int cosikID { get; set; } 

    [DataMember] 
    public string title { get; set; } 

    [DataMember] 
    public int DifficultyID { get; set; } 
    [DataMember] 
    public virtual Difficulty Difficulty { get; set; } 
} 

[DataContract(IsReference=true)] 
public class Difficulty 
{ 
    [DataMember] 
    public int DifficultyID { get; set; } 

    [DataMember] 
    [Required] 
    public string NameToDisplay { get; set; } 
} 

अगला मैं WCF सेवा आवेदन बनाया है और यह RESTful बनाया है। नीचे इंटरफेस के लिए कोड है: कि अनुबंध

public class RecipeService : IRecipeService 
{ 
//repository of Cosik entities - stores collection of all 
//Cosik entities that can be queried from DB 
private ICosikRepository cosikRepo; 
... 

public Cosik GetCosik() 
    { 
     Cosik c = cosikRepo.GetById(1); 
     return c; 
    } 

की

[ServiceContract] 
public interface ICosikService 
{ 
    [OperationContract] 
    [ApplyDataContractResolver] 
    [WebGet(UriTemplate = "/cosik")] 
    Cosik GetCosik(); 
} 

और कार्यान्वयन मैं पर दिया ApplyDataContractResolverAttribute वर्ग कार्यान्वित: http://msdn.microsoft.com/en-us/library/ee705457.aspx और GetCosik विधि के लिए [ApplyDataContractResolver] एनोटेशन गयी। हालांकि, यह मदद नहीं की।

कोई सुझाव जो मैंने याद किया है?

+0

यह आपकी सेवा आपरेशन GetCosik() और जिसमें * Cosik * तरह लग रहा है आप में चिह्नित किया है चूंकि एक डेटा अनुबंध वही नहीं है * कोसिक * जैसा कि आपके इकाई मॉडल में परिभाषित किया गया है और आपकी सेवा किसी कारण से वापस आने की कोशिश कर रही है। –

+0

यदि आप 'संदर्भ का उपयोग कर अपने [ऑब्जेक्ट कॉन्टेक्स्ट] (http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx) में आलसी लोडिंग अक्षम करते हैं, तो आपको अभी भी वही त्रुटि मिलती है। ContextOptions.LazyLoadingEnabled = false'? –

+0

क्या आप अपनी पकाने की विधि वर्ग के ऊपर [ज्ञात टाइप (कोसिक)] जोड़ सकते हैं। – Rajesh

उत्तर

4

कस्टम रिज़ॉल्यूवर विकसित करने के बजाय प्रॉक्सी निर्माण बंद करें। प्रॉक्सी WCF की तरह परिदृश्यों के लिए क्योंकि आलसी लोड हो रहा है बंद वैसे भी क्रमबद्धता और गतिशील परिवर्तन ट्रैकिंग के दौरान चालू होना चाहिए नहीं कर रहे हैं इस्तेमाल कभी नहीं किया है:

context.Configuration.ProxyCreationEnabled = false; 
+0

प्रॉक्सी सृजन को बंद करके मेरी सभी वर्चुअल ऑब्जेक्ट्स (फ़ील्ड्स) शून्य हो गईं और मैंने ईएफ द्वारा प्रदान की गई कार्यक्षमता को खो दिया। मैं सोच रहा हूं कि क्या वास्तव में यह मामला है कि मुझे डेटाबेस पर क्वेरी करना है ताकि वर्चुअल फ़ील्ड्स को उचित डेटा के साथ सेट किया जा सके। मैं बहुत सारे पृष्ठों से गुजरता हूं कि सरल डेटा के लिए सरल उदाहरणों के साथ डब्ल्यूसीएफ का उपयोग कैसे किया जाए, लेकिन वास्तविक डेटा वास्तविक दुनिया में दुर्लभ है। क्या कोई मुझे कुछ संसाधनों/ट्यूटोरियल पर इंगित कर सकता है जो बताता है कि अधिक जटिल डेटा पर ईएफ के साथ आराम wcf का उपयोग कैसे करें? अब मैं wcf (बाकी के बिना) का उपयोग करता हूं और यह काम करता है लेकिन मैं सीखना चाहता हूं कि इसे कैसे उपयोग करें – anetafr

+0

आपके वर्चुअल फ़ील्ड शून्य हैं क्योंकि आपने उत्सुक लोडिंग का उपयोग नहीं किया है। परिस्थितियों में आलसी लोडिंग का उपयोग करना जहां आप जानते हैं कि आपको उस डेटा की आवश्यकता होगी, सही नहीं है क्योंकि ईएफ को "हर संपत्ति" के लिए अलग डेटाबेस राउंडट्रिप बनाना होगा। –

+0

@anetafr बेहतर आरईएसटी समर्थन के लिए, प्रोजेक्ट आइटम प्रकार 'डब्ल्यूसीएफ डेटा सेवा' देखें, जिसका उपयोग कोड-पहले के साथ किया जा सकता है, हालांकि इसमें इसकी बाधाएं हैं (http://blogs.msdn.com/b/writingdata_services /archive/2011/06/15/entity-framework-4-1-code-first-and-wcf-data-services.aspx)। व्यक्तिगत रूप से मैं अपनी सेवा परत में इकाइयों और डीटीओ के बीच अनुवाद करने के क्लीनर विकल्प का चयन करूंगा। वैसे भी, आपके बारे में सोचने के लिए कुछ अन्य विकल्प .. – kallotec

 संबंधित मुद्दे