Risposte:
Esistono tre modi per sincronizzare il modello.
Eliminare le tabelle modificate dalla finestra di progettazione e trascinarle nuovamente nell'area di progettazione da Esplora database. Ho scoperto che, affinché funzioni in modo affidabile, devi:
un. Aggiorna lo schema del database in Esplora database (tasto destro del mouse, aggiorna)
b. Salvare il designer dopo aver eliminato le tabelle
c. Salva di nuovo dopo aver trascinato indietro le tabelle.
Nota che se hai modificato qualsiasi proprietà (ad esempio, disattivando la proprietà figlio di un'associazione), questo ovviamente perderà quelle modifiche - dovrai apportarle di nuovo.
Utilizzare SQLMetal per rigenerare lo schema dal database. Ho visto un numero di post sul blog che mostrano come scrivere questo .
Apporta le modifiche direttamente nel riquadro Proprietà del DBML. Funziona per semplici modifiche, come consentire null su un campo.
Il designer DBML non è installato per impostazione predefinita in Visual Studio 2015, 2017 o 2019. Dovrai chiudere VS, avviare il programma di installazione VS e modificare l'installazione. Gli strumenti LINQ to SQL sono la funzione che devi installare. Per VS 2017/2019, puoi trovarlo in Componenti singoli> Strumenti codice .
Per aggiornare una tabella nel diagramma .dbml con, ad esempio, colonne aggiunte, procedere come segue:
Puoi anche dare un'occhiata al set PLINQO di modelli di generazione del codice, basato su CodeSmith, che ti consente di fare molte cose interessanti per e con Linq-to-SQL:
Dai un'occhiata al sito PLINQO su http://www.plinqo.com e dai un'occhiata ai video introduttivi.
Il secondo strumento che conosco sono gli strumenti Huagati DBML / EDMX , che consentono l'aggiornamento dei file di mapping DBML (Linq-to-SQL) ed EDMX (Entity Framework) e altro (come convenzioni di denominazione ecc.).
Marc
Utilizziamo un modello T4 scritto personalizzato che esegue una query dinamica del modello information_schema per ogni tabella in tutti i nostri file .DBML, quindi sovrascrive parti del file .DBML con nuove informazioni sullo schema dal database. Io altamenteconsiglio di implementare una soluzione come questa: mi ha risparmiato una gran quantità di tempo e, a differenza dell'eliminazione e della re-aggiunta delle tue tabelle al tuo modello, riesci a mantenere le tue associazioni. Con questa soluzione, otterrai errori di compilazione quando lo schema cambia. Tuttavia, devi assicurarti di utilizzare un sistema di controllo della versione, perché la differenza è davvero utile. Questa è un'ottima soluzione che funziona bene se stai sviluppando con un primo approccio di schema DB. Naturalmente, non posso condividere il codice della mia azienda, quindi sei da solo per averlo scritto tu stesso. Ma se conosci Linq-to-XML e puoi andare a scuola con questo progetto , puoi arrivare dove vuoi.
Consiglierei di usare il visual designer integrato in VS2008, poiché l'aggiornamento del dbml aggiorna anche il codice che viene generato per te. La modifica del dbml all'esterno del visual designer comporterebbe la mancata sincronizzazione del codice sottostante.
Esiste una sfumatura nell'aggiornamento delle tabelle e nell'aggiornamento del DBML ... Le relazioni con le chiavi esterne non vengono sempre immediatamente ripristinate se vengono apportate modifiche alle tabelle esistenti. Il problema consiste nel creare un progetto e quindi aggiungere nuovamente le tabelle. Ho segnalato questo a MS e il suo problema è stato risolto per VS2010.
La visualizzazione DBML non mostra nuovi vincoli di chiave esterna
Si noti che le istruzioni fornite nella risposta principale non sono chiare. Per aggiornare la tabella
Nel caso dell'aggiornamento della procedura memorizzata, è necessario eliminarlo dal file .dbml e reinserirlo di nuovo. Ma se la procedura memorizzata ha due percorsi (es: if qualcosa; visualizza alcune colonne; altrimenti mostra altre colonne), assicurati che i due percorsi abbiano gli stessi alias di colonne !!! In caso contrario, saranno presenti solo le colonne del primo percorso.
Ecco il metodo passo-passo completo che ha funzionato per me al fine di aggiornare il dbml LINQ to SQL e i file associati per includere una nuova colonna che ho aggiunto a una delle tabelle del database.
È necessario apportare le modifiche alla superficie del progetto come suggerito da altri precedenti; tuttavia, è necessario eseguire alcuni passaggi aggiuntivi. Questi sono i passaggi completi:
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!).