Erro ao retornar JSON com WCF e FluentNhibernate
03/12/2012
0
[DataContract] public class Cidade { [DataMember] public virtual int Id { get; set; } [DataMember] public virtual Estado Estados { get; set; } [DataMember] public virtual string Nome { get; set; } [DataMember] public virtual int? Codigo_ibge { get; set; } [DataMember] public virtual int? Codigo_receita_federal { get; set; } [DataMember] public virtual int? Codigo_estadual { get; set; } [DataMember] public virtual char Ativo { get; set; } } [DataContract] public class Estado { [DataMember] public virtual int Id { get; set; } [DataMember] public virtual string Sigla { get; set; } [DataMember] public virtual string Nome { get; set; } [DataMember] public virtual int Codigo_ibge { get; set; } [DataMember] public virtual char Ativo { get; set; } [DataMember] public virtual IList<Cidade> Cidade { get; set; } public Estado() { this.Cidade = new List<Cidade>(); } } public class EstadoMap : ClassMap<Estado> { public EstadoMap() { Id(e => e.Id); Map(e => e.Sigla); Map(e => e.Nome); Map(e => e.Codigo_ibge); Map(e => e.Ativo); HasMany(e => e.Cidade).KeyColumn("id_uf"); Table("estado"); } } public class CidadeMap : ClassMap<Cidade> { public CidadeMap() { Id(e => e.Id); Map(e => e.Nome); Map(e => e.Codigo_receita_federal); Map(e => e.Codigo_ibge); Map(e => e.Codigo_estadual); Map(e => e.Ativo); References(e => e.Estados).Column("id_uf"); Table("cidade"); } } Interface: [OperationContract] [WebGet(UriTemplate = "/RetornarTodasCidades", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] IList<Cidade> RetornarTodasCidades(); public IList<Cidade> RetornarTodasCidades() { using (ISession session = FluentSessionFactory.AbrirSession()) { try { return (from t in session.Query<Cidade>() where t.Ativo.Equals('S') select t).ToList(); } catch (Exception ex) { throw ex; } } }
Thiago Porto
Post mais votado
04/12/2012
Bom dia,
Qual é exatamente a exceção que está sendo retornada?
Renato
Renato Groffe
Mais Posts
04/12/2012
Thiago Porto
04/12/2012
Renato Groffe
Nas ocasiões em que utilizei o Fluent NHibernate, eu não montei classes com relacionamentos.
Mas acredito que o problema esteja acontecendo pelo fato de não existir uma propriedade de nome "id_uf" na sua classe Cidade. É provável que isso esteja ocasionando este problema.
Segue um link que comenta sobre isso:
[url]http://stackoverflow.com/questions/9761154/fluent-nhibernate-mapping-hasmany[/url]
04/12/2012
Renato Groffe
04/12/2012
Thiago Porto
04/12/2012
Renato Groffe
Normalmente quando desenvolvo Web Services, procuro retornar sempre a menor quantidade de informações possível. A razão disso está em diminuir o tráfego de rede e também devolver os dados em um formato bem simples (sem envolver uma hierarquia classes) de forma a possibilitar que não ocorram problemas quando o serviço for consumido em uma aplicação em outra plataforma (Java, por exemplo).
O mecanismo de acesso a dados que for utilizado não faz tanta diferença. O importante é ter em mente a necessidade de fazer as coisas bem simples e organizadas.
No seu caso, eu criar um método que devolve os estados, além de uma segunda operação que devolve as cidades. Dessa maneira, só realmente quando fosse necessário seriam retornadas informações de cidades ou estados.
04/12/2012
Thiago Porto
Obrigado pela ajuda! Esperando por artigos seus a respeito.
04/12/2012
Renato Groffe
Vou tentar montar a partir da próxima semana algo que envolva JQuery + WCF + Fluent NHibernate. Já tinha a intenção de fazer isso antes e vou aproveitar a deixa agora.
Até
27/02/2015
Gabriel Simas
Obrigado pela ajuda! Esperando por artigos seus a respeito.
E aí Thiago. Conseguiu resolver o seu problema? caso sim nos informe para que possamos fechar este tópico como "[RESOLVIDO]".
Forte Abraço.
Clique aqui para fazer login e interagir na Comunidade :)