2012-01-05 11 views
7

मैं एंटिटी फ्रेमवर्क (4.2) का नवीनतम संस्करण उपयोग कर रहा हूं और अपनी संस्थाओं के लिए इंटरफेस को कार्यान्वित करने की कोशिश कर रहा हूं और किसी कारण से, यह संकलित नहीं हो रहा है। यह एक त्रुटि फेंक रहा है "Cannot convert expression type ICollection<IOrder> to return type ICollection<Order>"। अगर मैं संस्थाओं के लिए इंटरफेस का उपयोग नहीं करता, तो मुझे यह त्रुटि नहीं मिलती है।त्रुटि फ्रेमवर्क (4.2) इकाइयों के लिए इंटरफेस का उपयोग करते समय त्रुटि

मेरे पास इंटरफेस (भंडार और सेवाओं आदि के लिए) के लिए एक अलग परियोजना है और मुझे उन तरीकों में ईएफ इकाइयों को पैरामीटर के रूप में पास करने की आवश्यकता है और मैं उन में वास्तविक संस्थाओं को पारित नहीं करना चाहता, क्योंकि इसके लिए ईएफ इकाइयों पर निर्भरता रखने के लिए इंटरफेस परियोजना।

मेरा लक्ष्य कुछ हद तक इस पोस्ट Can I abstract Entity Framework away from my Entities?

में उल्लेख किया है के समान है यहाँ नमूना है। मैंने यहां एक नमूना लगाया है, मेरी वास्तविक संस्थाएं अलग हैं, लेकिन समस्या एक जैसी है।

public interface IOrder 
{ 
    int OrderId { get; set; } 
    int CustomerId { get; set; } 
    ICustomer Customer { get; set; } 
} 

public class Order : IOrder 
{ 
    public int OrderId { get; set; } 
    public int CustomerId { get; set; } 
    ICustomer Customer { get; set; } 
} 

public interface ICustomer 
{ 
    int CustomerId { get; set; } 
    ICollection<IOrder> Orders { get; set; } 
} 

public class Customer : ICustomer 
{ 
    public int CustomerId { get; set; } 
    ICollection<IOrder> Orders { get; set; } 
} 

public class OrderMap : EntityTypeConfiguration<Order> 
{ 
    this.HasOptional(t => t.Customer) 
    .WithMany(t => t.Orders) //error comes from this line 
    .HasForeignKey(d => d.CustomerId); 
} 
+0

संभव समाधान के रूप में/9805329/कैसे-टू-यूज-इंटरफेस-गुण-कोड-फर्स्ट/10 994290 # 10 994290 – Cel

उत्तर

6

इकाई ढांचे इंटरफेस के साथ काम करने में सक्षम नहीं है। आपके नेविगेशन गुणों को वास्तविक इकाई प्रकारों (मैप किए गए वर्ग) का उपयोग करना चाहिए।

+0

लेकिन मेरे पास एक प्रोजेक्ट है जिसमें केवल इंटरफेस होते हैं उदाहरण के लिए कहें कि मेरे पास "IOrderService" है जिसमें "आईनेमेरेबल गेटऑर्डर (आईसी कस्टमर ग्राहक) "(जो बदले में डेटा लाने के लिए एक भंडार को कॉल करेगा। कृपया इसके साथ गलती खोजने की कोशिश न करें, यह सिर्फ एक उदाहरण है)। मैं यहां वास्तविक इकाई प्रकार का उपयोग नहीं कर सकता क्योंकि इस परियोजना को असली संस्थाओं का संदर्भ होना चाहिए जो वास्तविक दृष्टिकोण के संदर्भ में सही दृष्टिकोण यानी इंटरफ़ेस प्रोजेक्ट नहीं है। यह आम तौर पर दूसरे तरीके से होना चाहिए। – RKP

+0

वास्तव में मेरे पास एंटिटी फ्रेमवर्क प्रोजेक्ट से एक अलग परियोजना में सभी ईएफ इकाइयां हैं जो उन्हें निरंतरता पर निर्भरता के बिना व्यावसायिक वस्तुओं के रूप में उपयोग करने के लिए उपयोग करती हैं। सभी मैपिंग और डेटाबेस संदर्भ इत्यादि एक अलग परियोजना में हैं, इसमें संस्थाओं के लिए एक संदर्भ है। – RKP

+0

यह दृढ़ता पर निर्भरता नहीं है। यह संस्थाओं के बीच निर्भरता है और ईएफ इसकी मांग करता है। बस ईएफ इसका समर्थन नहीं करता है और मुझे किसी भी कामकाज से अवगत नहीं है। अपने इंटरफेस और इकाइयों को एकल असेंबली में मर्ज करें और वास्तविक इकाई प्रकारों के साथ नेविगेशन गुणों को परिभाषित करें। –

1

"आप इंटरफेस लागू किया जाना निर्दिष्ट करने के लिए अपनी खुद की आंशिक वर्ग फ़ाइलें जोड़ सकते हैं - और किसी भी वास्तविक क्रियान्वयन के तरीकों की जरूरत है प्रदान करने के लिए" - http://stackoverflow.com/questions पर सुझाव here

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