5

मैं अपने एएसपी.नेट एमवीसी 3 ऐप पर कहीं भी फंस गया हूं।केवल प्रारंभकर्ता, इकाई सदस्य, और इकाई नेविगेशन गुण समर्थित हैं। (एएसपी.नेट एमवीसी और इकाई फ्रेमवर्क)

निर्दिष्ट प्रकार सदस्य 'AccommPropertyTags' संस्थाओं को LINQ में समर्थित नहीं है: यहाँ त्रुटि मैं हो रही है। केवल प्रारंभकर्ता, इकाई सदस्य, और इकाई नेविगेशन गुण समर्थित हैं।

मैं पाया है कि किस प्रकार हम निम्न आलेख पर इस का समाधान कर सकते हैं:

Only initializers, entity members, and entity navigation properties are supported

लेकिन मेरा एक छोटा सा अजीब है।

यहाँ मेरी संस्था की आंशिक वर्ग में से एक है:

[MetadataType(typeof(AccommPropertyWebDetail.MetaData))] 
public partial class AccommPropertyWebDetail { 

    public virtual ICollection<string> AccommPropertyTags { 

     get { 

      return Helpers.AccommPropertyTag.CreateStringListFromString(this.PropertyTags); 
     } 
    } 

    private class MetaData { 

     [Required, StringLength(50)] 
     public string Category { get; set; } 

    } 
} 

आप ऊपर देख सकते हैं, AccommPropertyTags संपत्ति typeof ICollection<string> है। मुझे अपने नियंत्रक के अंदर कोशिश कर रहा हूँ इस प्रकार है:

public ViewResult Tag(string tag) { 

    var _rawTag = HttpUtility.UrlDecode(tag); 

    ViewBag.Tag = _rawTag; 

    var model = _accommpropertyrepo.GetAllAccommPropertiesFullWebIgnoringApprovalStatus(); 

    model = model.Where(
      x => x.AccommPropertyTags.Any(
        y => y == _rawTag 
       ) 
     ); 

    return View(model); 
} 
क्योंकि तथ्य यह है कि मैं Any उपयोग कर रहा हूँ वहाँ, इकाई एसक्यूएल और नहीं कर सकते करने के लिए अपने AccommPropertyTags संपत्ति परिवर्तित करने के लिए है क्योंकि यह मेज स्कीमा का हिस्सा नहीं है कोशिश कर रहा है की

क्या मैं वास्तव में यहां फंस गया हूं या क्या यह कष्टप्रद त्रुटि को मारने का एक अच्छा तरीका है?

उत्तर

10

आपकी समस्या आपके द्वारा लिंक किए गए प्रश्न के समान है। Where का उपयोग करने से पहले model.ToList() पर कॉल करें। यह ईएफ को इकाइयों को मूर्त रूप देने के लिए मजबूर करेगा और फिर शेष फ़िल्टरिंग को स्मृति में लागू करेगा।

public ViewResult Tag(string tag) { 

    var _rawTag = HttpUtility.UrlDecode(tag); 

    ViewBag.Tag = _rawTag; 

    var model = _accommpropertyrepo.GetAllAccommPropertiesFullWebIgnoringApprovalStatus(); 

    var result = model.ToList().Where(
      x => x.AccommPropertyTags.Any(
        y => y == _rawTag 
       ) 
     ); 

    return View(result); 
} 
संबंधित मुद्दे