Respostas:
Existem três maneiras de manter o modelo sincronizado.
Exclua as tabelas modificadas do designer e arraste-as de volta para a superfície do designer no Database Explorer. Eu descobri que, para que isso funcione de maneira confiável, você deve:
uma. Atualize o esquema do banco de dados no Database Explorer (clique com o botão direito do mouse, atualize)
b. Salve o designer depois de excluir as tabelas
c. Salve novamente depois de arrastar as tabelas de volta.
Observe, porém, que se você tiver modificado alguma propriedade (por exemplo, desativando a propriedade filho de uma associação), isso obviamente perderá essas modificações - você precisará fazê-las novamente.
Use SQLMetal para gerar novamente o esquema do seu banco de dados. Eu já vi várias postagens de blog que mostram como fazer isso .
Faça as alterações diretamente no painel Propriedades do DBML. Isso funciona para alterações simples, como permitir nulos em um campo.
O designer DBML não é instalado por padrão no Visual Studio 2015, 2017 ou 2019. Você precisará fechar o VS, iniciar o instalador do VS e modificar sua instalação. As ferramentas LINQ to SQL são o recurso que você deve instalar. Para o VS 2017/2019, você pode encontrá-lo em Componentes individuais> Ferramentas de código .
Para atualizar uma tabela no seu diagrama .dbml com, por exemplo, colunas adicionadas, faça o seguinte:
Você também pode verificar o PLINQO conjunto de modelos de geração de código, baseado em CodeSmith, que permitem que você faça um monte de coisas legais para e com Linq-to-SQL:
Confira o site do PLINQO em http://www.plinqo.com e dê uma olhada nos vídeos de introdução.
A segunda ferramenta que conheço é a ferramentas Huagati DBML / EDMX , que permitem a atualização dos arquivos de mapeamento DBML (Linq-to-SQL) e EDMX (Entity Framework) e muito mais (como convenções de nomenclatura etc.).
Marc
Usamos um modelo T4 gravado personalizado que consulta dinamicamente o modelo information_schema para cada tabela em todos os nossos arquivos .DBML e, em seguida, substitui partes do arquivo .DBML por novas informações de esquema do banco de dados. Eu altamenterecomendo a implementação de uma solução como esta - ela me economizou muito tempo e, ao contrário de excluir e adicionar novamente suas tabelas ao seu modelo, você mantém suas associações. Com esta solução, você receberá erros em tempo de compilação quando o esquema for alterado. Você quer ter certeza de que está usando um sistema de controle de versão, porque a diferença é realmente útil. Essa é uma ótima solução que funciona bem se você estiver desenvolvendo com uma primeira abordagem de esquema de banco de dados. É claro que não posso compartilhar o código da minha empresa, então você pode escrever isso sozinho. Mas se você conhece algum Linq-XML e pode frequentar a escola nesse projeto , pode chegar onde quer que esteja.
Eu recomendaria o uso do designer visual incorporado no VS2008, pois a atualização do dbml também atualiza o código gerado para você. Modificar o dbml fora do designer visual resultaria em falta de sincronia no código subjacente.
Há uma nuance na atualização de tabelas e na atualização do DBML ... Os relacionamentos de chave estrangeira nem sempre são trazidos imediatamente se forem feitas alterações nas tabelas existentes. A solução é fazer uma compilação do projeto e adicionar novamente as tabelas novamente. Eu relatei isso ao MS e está sendo corrigido para o VS2010.
A exibição DBML não mostra novas restrições de chave estrangeira
Observe que as instruções dadas na resposta principal não são claras. Para atualizar a tabela
No caso de atualização do procedimento armazenado, exclua-o do arquivo .dbml e reinsira-o novamente. Mas se o procedimento armazenado tiver dois caminhos (por exemplo: se algo; exibir algumas colunas; além disso, exibir outras colunas), verifique se os dois caminhos têm os mesmos aliases de colunas !!! Caso contrário, apenas as primeiras colunas do caminho existirão.
Aqui está o método passo a passo completo que funcionou para mim para atualizar o dbml LINQ to SQL e os arquivos associados para incluir uma nova coluna que eu adicionei a uma das tabelas do banco de dados.
Você precisa fazer as alterações em sua superfície de design, conforme sugerido por outras pessoas acima; no entanto, você precisa executar algumas etapas extras. Estas são as etapas completas:
1. Drag your updated table from Server Explorer onto the design surface
2. Copy the new column from this "new" table to the "old" table (see M463 answer for details on this step)
3. Delete the "new" table that you just dragged over
4. Click and highlight the stored procedure, then delete it
5. Drag the new stored procedure and drop into place.
6. Delete the .designer.vb file in the code-behind of the .dbml
(if you do not delete this, your code-behind containing the schema will
not update even if you rebuild and the new table field will not be included)
7. Clean and Rebuild the solution (this will rebuild the .designer.vb file to include all the new changes!).