Ho una tabella di riferimento con tutti i tipi di dati di valore di ricerca controllati per sesso, tipo di indirizzo, tipo di contatto, ecc Molte tabelle hanno molteplici chiavi esterne a questa tabella di riferimentopiù chiavi esterne allo stesso tavolo
anche io avere tabelle di associazione molti-a-molti che hanno due chiavi esterne per la stessa tabella. Sfortunatamente, quando queste tabelle vengono inserite in un modello Linq e il DBML viene generato, SQLMetal non considera i nomi delle colonne di chiavi esterne o i nomi dei vincoli, ma solo nella tabella di destinazione. Così finisco con membri chiamati Reference1, Reference2, ... non molto manutenibili. Esempio:
<Association Name="tb_reference_tb_account" Member="tb_reference" <======
ThisKey="shipping_preference_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
<Association Name="tb_reference_tb_account1" Member="tb_reference1" <======
ThisKey="status_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
posso andare in DBML e modificare manualmente i nomi dei membri, naturalmente, ma questo vorrebbe dire non posso più di andata e ritorno il mio schema del database. Questa non è un'opzione nella fase attuale del modello, che è ancora in evoluzione. Anche la suddivisione della tabella di riferimento in n tabelle singole non è auspicabile.
Probabilmente posso scrivere uno script eseguito contro l'XML dopo ogni generazione e sostituisce il nome del membro con qualcosa derivato da ThisKey (poiché aderisco a una convenzione di denominazione per questi tipi di chiavi). Qualcuno ha trovato una soluzione migliore a questo problema?
Questo sembra rilevante: http://stackoverflow.com/questions/3736003/sqlmetal-multiple-foreign-keys-pointing-to-one-table-issue – DenNukem