Pergunta

Estou experimentando a nova ferramenta de criação de sites de dados dinâmicos fornecida com o .NET 3.5.A ferramenta usa fontes de dados LINQ para obter os dados do banco de dados usando um arquivo de contexto .dmbl como referência.Estou interessado em personalizar uma grade de dados, mas preciso mostrar dados de mais de uma tabela.Alguém sabe como fazer isso usando o objeto LINQ Datasource?

Foi útil?

Solução

Se as tabelas estiverem conectadas por uma chave estrangeira, você pode facilmente referenciar ambas as tabelas, pois elas serão unidas pelo linq automaticamente (você pode ver facilmente se olhar no seu dbml e há uma seta conectando as tabelas) - se não, veja se você pode adicionar um.

Para fazer isso, você pode simplesmente usar algo assim:

<%# Bind("unit1.unit_name") %>

Onde na tabela, 'unidade' tem uma chave estrangeira que faz referência a outra tabela e você extrai a propriedade dessa 'unidade' de 'nome_da_unidade'

Espero que faça sentido.

Outras dicas

(EDIT entendeu mal a pergunta, revisando minha resposta para o seguinte)

Seu LinqDataSource pode apontar para uma visão, o que permite superar o problema de não ser capaz de expressar um Join no elemento real.De "Como:Criar classes LINQ to SQL mapeadas para tabelas e visualizações (O/R Designer)":

O O/R Designer é um mapeador relacional de objeto simples porque suporta apenas relacionamentos de mapeamento 1:1.Em outras palavras, uma classe de entidade pode ter apenas um relacionamento de mapeamento 1:1 com uma tabela ou visualização do banco de dados.O mapeamento complexo, como o mapeamento de uma classe de entidade para diversas tabelas, não é suportado.No entanto, você pode mapear uma classe de entidade para uma visualização que une diversas tabelas relacionadas.

Você não pode colocar mais de um objeto/fonte de dados em um datagrid.Você terá que construir um único ConceptObject que combine as propriedades expostas das entidades da parte.Tente usar DB -> Entidades L2S -> ConceptObject.Você deve ser muito planejado se o modelo de banco de dados corresponder ao ConceptObject campo por campo.

É melhor usar um ObjectDataSource quando quiser fazer um Linq mais complexo e vincular sua grade ao ObjectDataSource.No entanto, você precisa estar atento aos tipos Anonymous que podem lhe causar alguns problemas, mas tudo é possível...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top