Como introduzir tipos de chave primitivos personalizados nos Serviços de Dados WCF (Astoria)
-
25-09-2019 - |
Pergunta
Usamos o tipo personalizado para representar identificadores em nosso projeto. Ele tem o TypeConvertor anexado e sempre ajudou na serialização.
Tentei usar os serviços de dados da WCF para expor alguns dados do nosso sistema, mas enfrentei um problema. A Astoria Framework não reconhece a classe como uma entidade, mesmo que eu a decorasse com o atributo [DataServiceKey ("ID")]. Se eu mudar o tipo de propriedade para GUID - ela funciona totalmente :(.
Como ensinar serviços de dados da WCF a entender essa classe simples?
Solução
Depois de um pouco de pesquisa e uma tonelada de trabalho refletor, descobri que não é possível.
Os serviços de dados da WCF têm suporte de metadados externos monumentais descrito em detalhes por Alex James em muito boa série de Postagens.
No entanto, a criação dos tipos de dados primitivos é proibida e a propriedade -chave da entidade deve ser do tipo primitivo. Além disso, não há gancho de pré e pós-execução disponível para fornecer conversão em tempo de execução e para o tipo de string.
Este e o apoio limitado do LINQ da Nibernate tornam Astoria bastante inutilizável para mim agora. Bruxa é muito triste.
Outras dicas
Enquanto a classe possui um DataServices de ID da propriedade, deve serializar -a em serializar corretamente. Você nem precisa do atributo se a propriedade for nomeada ID. Você viu o exemplo que eu fiz aqui. Além disso, você encontrará uma lista completa de artigos relacionados ao Odata sobre http://www.odataprimer.com. Talvez um deles ajude.