2011-06-30 9 views
10

मैं निम्न त्रुटि हो रही है में समर्थित हैं। मुझे समझ में नहीं आता कि मेरा कोड त्रुटि क्यों बना रहा है। मेरी तुलना प्राचीन प्रकार के खिलाफ हैं। सभी तुलना Guid करने के लिए Guid हैं। त्रुटि विशेष रूप से बताती है कि गइड्स ठीक हैं।केवल आदिम प्रकार ('इस तरह के Int32, स्ट्रिंग, और Guid' के रूप में) इस संदर्भ

त्रुटि इस लाइन पर होता है (नीचे की ओर):

var vla = (from cir in phoenixEntities.ComponentInRoles 

कोड:

List<ComponentRole> roles; 
using (IMSMembershipEntities entities = new IMSMembershipEntities()) 
{ 
    roles = (from role1 in entities.Roles 
      select new ComponentRole{Name = role1.RoleName, RoleId = role1.RoleId}).ToList(); 
} 

List<Components> componentInRoles; 

using (PhoenixEntities phoenixEntities = new PhoenixEntities()) 
{ 
    phoenixEntities.ContextOptions.LazyLoadingEnabled = false; 
    componentInRoles = (from component in phoenixEntities.Components 
         select new Components{Name = component.Name, 
               ComponentId = component.ComponentId, 
               //InRoles = (from componentInRole in phoenixEntities.ComponentInRoles 
               //   join role in roles on componentInRole.RoleId equals role.RoleId 
               //   where componentInRole.ComponentId == component.ComponentId 
               //   select new ComponentRole{RoleId = role.RoleId, Name = role.Name}) 
               } 
         ).ToList(); 


    foreach (Components cmpent in componentInRoles) 
    { 
     Components cmpent1 = cmpent; 
     //cmpent.InRoles = 

     var vla = (from cir in phoenixEntities.ComponentInRoles 
        join role in roles on cir.RoleId equals role.RoleId 
        where cir.ComponentId == cmpent1.ComponentId 
         select role).ToList(); 
    } 
} 
+0

वहाँ Foels और phoenixEntities के बीच एक रिश्ता है मदद की? – Jethro

उत्तर

18

EntityFramework और Linq दोनों तरह के प्रश्नों जो एक हिस्से में है अनुवाद करने का प्रयास करने के लिए SQL स्मृति और दूसरा भाग डेटाबेस में है, IN ऑपरेटर sql करने के लिए।

और क्योंकि आपकी कक्षा जो भूमिकाएं एक आईनेमरेबल है वह एक प्राचीन प्रकार नहीं है जिसे इसे SQL क्वेरी में अनुवादित नहीं किया जा सकता है।

आपको पहले डेटाबेस से स्मृति में लाने और फिर स्मृति में दो सूचियों में शामिल होना चाहिए।

उदाहरण के लिए

:

var vla = (from cir in phoenixEntities.ComponentInRoles.ToList() 
        join role in roles on cir.RoleId equals role.RoleId 
        where cir.ComponentId == cmpent1.ComponentId 
         select role).ToList(); 

मुझे आशा है कि मैं

+0

आह, मैं देखता हूं, मूल रूप से मैं LINQ-to-Objects और LINQ-to-Entities को मिश्रित कर रहा हूं। –

+0

यह तय है। धन्यवाद! –

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