2011-11-22 68 views
0

我首先使用Entity Framework 4.1代碼,執行下面的搜索,返回錯誤消息:指定的類型成員ENDESC_CEP是在LINQ to Entities中不受支持。僅支持初始化程序,實體成員和實體導航屬性。,這發生在參數qunado SCEP時。 即使參數SCEP步驟地址數據未加載。 有人會告訴我該怎麼辦? 我感謝任何幫助。實體框架4,1代碼第一,錯誤指定類型成員ENDESC_CEP在LINQ to Entities中不受支持

using (SecurityCtx ctx = new SecurityCtx()) 
    { 
     ctx.Configuration.LazyLoadingEnabled = true; 
     var query = ctx.Escola.Include("UnidadeFederativa").Include("Municipio").Include("EnderecoEscolas").Where(p => p.ID_EMPRESA == IdEmpresa); 

     if ((!String.IsNullOrEmpty(sUF)) && (sUF != "ZZ")) 
     { 
     query = query.Where(p => p.UnidadeFederativa.UF_SIGLA == sUF); 
     } 

     if (!String.IsNullOrEmpty(sMunicipio)) 
     { 
     query = query.Where(p => p.Municipio.MUN_DESCRICAO.Contains(sMunicipio.Trim())); 
     } 

     if (! String.IsNullOrEmpty(sNome)) 
     { 
     query = query.Where(p => p.ESCOLA_NOME.Contains(sNome.Trim())); 
     } 

     if (! String.IsNullOrEmpty(sCodigo)) 
     { 
     query = query.Where(p => p.ESCOLA_CODIGO.Contains(sCodigo.Trim())); 
     } 

     if (!String.IsNullOrEmpty(sEndereco)) 
     { 
     query = query.Where(p => p.EnderecoEscolas.ToList().Select(item => item.ENDESC_ENDERECO.Contains(sEndereco.Trim())).First()); 
     } 

     if (!String.IsNullOrEmpty(sBairro)) 
     { 
     query = query.Where(p => p.EnderecoEscolas.ToList().Select(item => item.ENDESC_BAIRRO.Contains(sBairro.Trim())).First()); 
     } 

     if (!String.IsNullOrEmpty(sCEP)) 
     { 
     query = query.Where(p => p.ENDESC_CEP.Contains(sCEP)); 
     } 

     query = query.OrderBy(p => p.ESCOLA_NOME.Trim() ).ToList().Select(item => new Escola 
      { 
      ESCOLA_ID = item.ESCOLA_ID, 
      ID_EMPRESA = item.ID_EMPRESA, 
      ESCOLA_CODIGO = item.ESCOLA_CODIGO, 
      ESCOLA_NOME = item.ESCOLA_NOME, 
      ESCOLA_CNPJ = item.ESCOLA_CNPJ, 
      ESCOLA_E_MAIL = item.ESCOLA_E_MAIL, 
      ESCOLA_URL = item.ESCOLA_URL, 
      ESCOLA_NOME_FANTASIA = item.ESCOLA_NOME_FANTASIA, 
      ESCOLA_UF_ID   = item.ESCOLA_UF_ID, 
      ESCOLA_MUNICIPIO_ID = item.ESCOLA_MUNICIPIO_ID, 
      ESCOLA_REDE_ID  = item.ESCOLA_REDE_ID, 
      ESCOLA_LOCAL_ID  = item.ESCOLA_LOCAL_ID, 
      STATUS_MUNICIPIO_ID = item.STATUS_MUNICIPIO_ID, 
      CODIGO_NIVEL_SE_ID = item.CODIGO_NIVEL_SE_ID, 
      CODIGO_PER_PLA_DIDATICO_ID = item.CODIGO_PER_PLA_DIDATICO_ID, 
      CODIGO_PER_PLA_PARADIDATICO_ID = item.CODIGO_PER_PLA_PARADIDATICO_ID, 
      ESCOLA_ORIGEM_DADOS_ID   = item.ESCOLA_ORIGEM_DADOS_ID, 
      ESCOLA_ATIVA     = item.ESCOLA_ATIVA, 
      ESCOLA_DATA_CADASTRAMENTO  = item.ESCOLA_DATA_CADASTRAMENTO, 
      ESCOLA_DATA_ATUALIZACAO  = item.ESCOLA_DATA_ATUALIZACAO, 
      UF_SIGLA      = item.UnidadeFederativa.UF_SIGLA, 
      UF_DESCRICAO     = item.UnidadeFederativa.UF_DESCRICAO, 
      MUN_DESCRICAO     = item.Municipio.MUN_DESCRICAO, 
      ENDESC_ENDERECO    = item.ENDESC_ENDERECO, 
      ENDESC_NRO      = item.ENDESC_NRO, 
      ENDESC_CEP      = item.ENDESC_CEP , 
      ENDESC_COMPL     = item.ENDESC_COMPL , 
      ENDESC_BAIRRO     = item.ENDESC_BAIRRO 
      }).AsQueryable(); 

     return query; 

DAO:

[Table("CAD_ESCOLAS")] 
    public class Escola 
    { 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int ESCOLA_ID { get; set; } 

    [Required] 
    public int ID_EMPRESA { get; set; } 

    [ForeignKey("ID_EMPRESA")] 
    public virtual Empresa Empresa { get; set; } 

    [StringLength(10), Required] 
    [MinLength(8)] 
    public string ESCOLA_CODIGO { get; set; } 

    [StringLength(120), Required] 
    [MinLength(20)] 
    public string ESCOLA_NOME { get; set; } 

    [StringLength(20)] 
    public string ESCOLA_CNPJ { get; set; } 

    [StringLength(120)] 
    public string ESCOLA_E_MAIL { get; set; } 

    [StringLength(120)] 
    public string ESCOLA_URL { get; set; } 

    [StringLength(80)] 
    public string ESCOLA_NOME_FANTASIA { get; set; } 

    [Required] 
    public int ESCOLA_UF_ID { get; set; } 

    [ForeignKey("ESCOLA_UF_ID")] 
    public virtual UnidadeFederativa UnidadeFederativa { get; set; } 

    [Required] 
    public int ESCOLA_MUNICIPIO_ID { get; set; } 

    [ForeignKey("ESCOLA_MUNICIPIO_ID")] 
    public virtual Municipio Municipio { get; set; } 

    [Required] 
    public int ESCOLA_REDE_ID { get; set; } 

    [ForeignKey("ESCOLA_REDE_ID")] 
    public virtual RedeEnsino RedeEnsino { get; set; } 

    [Required] 
    public int ESCOLA_LOCAL_ID { get; set; } 

    [ForeignKey("ESCOLA_LOCAL_ID")] 
    public virtual TipoLocalizacao TipoLocalizacao { get; set; } 

    [Required] 
    public int STATUS_MUNICIPIO_ID { get; set; } 

    [ForeignKey("STATUS_MUNICIPIO_ID")] 
    public virtual StatusMunicipio StatusMunicipio { get; set; } 

    [Required] 
    public int CODIGO_NIVEL_SE_ID { get; set; } 

    [ForeignKey("CODIGO_NIVEL_SE_ID")] 
    public virtual NivelSocioEconomico NivelSocioEconomico { get; set; } 

    [Required] 
    public int CODIGO_PER_PLA_DIDATICO_ID { get; set; } 

    [ForeignKey("CODIGO_PER_PLA_DIDATICO_ID")] 
    public virtual PerPlanDidatico PerPlanDidatico { get; set; } 

    [Required] 
    public int CODIGO_PER_PLA_PARADIDATICO_ID { get; set; } 

    [ForeignKey("CODIGO_PER_PLA_PARADIDATICO_ID")] 
    public virtual PerPlanParadidatico PerPlanParadidatico { get; set; } 

    [Required] 
    public int ESCOLA_ORIGEM_DADOS_ID { get; set; } 

    [ForeignKey("ESCOLA_ORIGEM_DADOS_ID")] 
    public virtual OrigemDadosEsc OrigemDadosEsc { get; set; } 

    [Required] 
    public bool ESCOLA_ATIVA { get; set; } 

    [Required] 
    public DateTime ESCOLA_DATA_CADASTRAMENTO { get; set; } 

    [Required] 
    public DateTime ESCOLA_DATA_ATUALIZACAO { get; set; } 

    [NotMapped] 
    public String UF_SIGLA { get; set; } 

    [NotMapped] 
    public String UF_DESCRICAO { get; set; } 


    [NotMapped] 
    public String MUN_DESCRICAO { get; set; } 

    [NotMapped] 
    public String ENDESC_ENDERECO { get; set; } 

    [NotMapped] 
    public String ENDESC_NRO { get; set; } 

    [NotMapped] 
    public String ENDESC_CEP { get; set; } 

    [NotMapped] 
    public String ENDESC_COMPL { get; set; } 

    [NotMapped] 
    public String ENDESC_BAIRRO { get; set; } 

    public virtual ICollection<EnderecoEscola> EnderecoEscolas { get; set; } 

    public Escola() 
    { 
     EnderecoEscolas = new HashSet<EnderecoEscola>(); 
    } 

    } 


namespace DAL 
{ 
    [Table("CAD_ENDERECO_ESCOLA")] 
    public class EnderecoEscola 
    { 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int ENDESC_ID { get; set; } 

    [Required] 
    public int ESCOLA_ID { get; set; } 

    [ForeignKey("ESCOLA_ID")] 
    public virtual Escola Escola { get; set; } 

    [Required] 
    public int TPOEND_ID { get; set; } 

    [ForeignKey("TPOEND_ID")] 
    public virtual TipoEndereco TipoEndereco { get; set; } 

    [Required] 
    public int ENDESC_UF_ID { get; set; } 

    [ForeignKey("ENDESC_UF_ID")] 
    public virtual UnidadeFederativa UnidadeFederativa { get; set; } 

    [Required] 
    public int ENDESC_MUN_iD { get; set; } 

    [ForeignKey("ENDESC_MUN_iD")] 
    public virtual Municipio Municipio { get; set; } 

    [StringLength(10), Required] 
    [MinLength(8)] 
    public string ENDESC_CEP { get; set; } 

    [StringLength(100), Required] 
    [MinLength(10)] 
    public string ENDESC_ENDERECO { get; set; } 

    [StringLength(15)] 
    public string ENDESC_NRO { get; set; } 

    [StringLength(25)] 
    public string ENDESC_COMPL { get; set; } 

    [StringLength(70)] 
    public string ENDESC_BAIRRO { get; set; } 

    } 
} 

韓國社交協會


我需要在一個網格實體的學校和與之相關的實體,即UnidadeFederativa,MUNICIPIO和EscolaEnderecos呈現的數據,如選擇如下:

select a.ESCOLA_NOME, 
     c.UF_SIGLA, 
     d.MUN_DESCRICAO, 
     b.ENDESC_ENDERECO, 
     b.ENDESC_BAIRRO 
    from CAD_ESCOLAS a, 
     CAD_ENDERECO_ESCOLA b, 
     CAD_UNIDADE_FEDERATIVA c, 
     CAD_MUNICIPIO   d 
    where a.ESCOLA_UF_ID = c.UF_ID and 
     a.ESCOLA_MUNICIPIO_ID = d.MUN_ID and 
     b.ESCOLA_ID = a.ESCOLA_ID and 
     b.ENDESC_CEP like '03138%' 
order by 1 

我只使用屬性[notmapped]來呈現從各個相關實體返回的相同數據記錄。

事實是,我無法訪問哪裏申請條件的實體EscolaEnderecos,的屬性,我可以恢復數據EscolaEnderecos,僅在第一記錄帶來的,而不是所有的satifizerem WHERE子句,如下所示:

item.EnderecoEscolas.Select (p => p.ENDESC_ENDERECO). First() 

總之,在條款中,我不能在EnderecoEscola訪問該財產,也不能爲從學校實體返回的每條記錄帶來EnderecoEscola數據。

如果有人能指導我,我非常感謝。

韓國社交協會

我需要在一個網格實體的學校和與之相關的實體,即UnidadeFederativa,MUNICIPIO和EscolaEnderecos呈現數據,如下選擇:

select a.ESCOLA_NOME, 
     c.UF_SIGLA, 
     d.MUN_DESCRICAO, 
     b.ENDESC_ENDERECO, 
     b.ENDESC_BAIRRO 
    from CAD_ESCOLAS a, 
     CAD_ENDERECO_ESCOLA b, 
     CAD_UNIDADE_FEDERATIVA c, 
     CAD_MUNICIPIO   d 
    where a.ESCOLA_UF_ID = c.UF_ID and 
     a.ESCOLA_MUNICIPIO_ID = d.MUN_ID and 
     b.ESCOLA_ID = a.ESCOLA_ID and 
     b.ENDESC_CEP like '03138%' 
order by 1 

我使用屬性[ notmapped]只是爲了呈現從各種相關實體返回的相同數據記錄。

事實是,我無法訪問哪裏申請條件的實體EscolaEnderecos,的屬性,我可以恢復數據EscolaEnderecos,僅在第一記錄帶來的,而不是所有的satifizerem WHERE子句,如下所示: 項目.EnderecoEscolas.Select(p => p.ENDESC_ENDERECO)。首先()

總之,在條款中,我不能在EnderecoEscola訪問該財產,也無法爲學校實體返回的每條記錄帶來EnderecoEscola數據。

如果有人能指導我,我非常感謝。

韓國社交協會

回答

1

你的財產Escola.ENDESC_CEP標有[NotMapped]屬性,這意味着它不會保持,並不代表數據庫中的一列。但是,您在LINQ to Entities查詢中使用它:query.Where(p => p.ENDESC_CEP.Contains(sCEP));,它表示通過這種(不存在)列過濾數據庫查詢。這是不可能的並導致異常。

+0

這對我有意義。 – JTew

0

看起來好像你正在做一個。選擇並投影檢索到的查詢信息到一個映射類。這不是我以前見過的,我不會推薦它。它在你的應用程序的其他地方工作嗎?

如果你有[NotMapped]的事情,那麼我會放一個實現放進去,所以......

[NotMapped] 
public String UF_SIGLA { get; set; } 

將成爲(你需要添加空檢查)

[NotMapped] 
public String UF_SIGLA { get { return item.UnidadeFederativa.UF_SIGLA; } } 

,並使用像:

query = query.OrderBy(p => p.ESCOLA_NOME.Trim() ).ToList() 

爲每個投影屬性做這個應該消除需要t o做全面的預測,潛在的事情可能開始工作,它可能也會澄清錯誤。

相關問題