5

ASP.NET MVC 3 uygulamamda bir yerde takılıyorum.Yalnızca başlatıcılar, varlık üyeleri ve varlık gezinme özellikleri desteklenir. (ASP.NET MVC ve Varlık Çerçevesi)

belirtilen tip üyesi 'AccommPropertyTags' varlıkları için LINQ desteklenmez: Burada ben alıyorum hatadır. Yalnızca başlatıcılar, varlık üyeleri ve varlık gezinme özellikleri desteklenir. Bence aşağıdaki makalede bu nasıl çözebiliriz bulduk

:

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

Ama benimki biraz garip.

İşte benim varlığın kısmi sınıfının birisidir: Yukarıda gördüğünüz gibi

[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 mülkiyet typeof ICollection<string> olduğunu. aşağıdaki gibi ne benim Kontrolörün içinde çalışıyorum geçerli: Çünkü Varlık o masa şemasının bir parçası olmadığı için SQL ve prizmanın benim AccommPropertyTags özelliğini dönüştürmek için çalışıyor, orada Any kullanıyorum gerçeğinin

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); 
} 

.

Burada gerçekten sıkışmış mıyım yoksa bu sinir bozucu hatayı almanın harika bir yolu var mı?

cevap

10

Sorununuz, bağlandığınız soruna benzer. Where'u kullanmadan önce model.ToList() numaralı telefonu arayın. Bu, EF'i varlıkları düzenlemeye zorlar ve ardından filtrenin kalanını belleğe uygular.

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); 
}