Domanda

In base a questo articolo: http://subsonicproject.com/docs/3.0_Migrations

Bottom line: if you're a developer that is concerned about database design,
migrations might not be for you.

Ok, va bene, posso trattare il database semplicemente come un archivio permanente di dati che non contiene alcuna logica di business. In altre parole, un file di testo glorificato.

Quello che non so come fare è in relazione due oggetti insieme. Prendiamo ad esempio queste due classi:

public class Disaster
{
    public int DisasterId { get; set; }
    public string Name { get; set; }
    public DateTime? Date { get; set; }
    public IList<Address> Addresses { get; set; }
}

public class Address
{
    public int AddressId { get; set; }
    public string WholeAddressHereForSakeOfBrevity { get; set; }
}

Disaster contiene un IList di Addresses multiplo che sono stati colpiti dal disastro. Quando uso SimpleRepository aggiungere questi per il database con SimpleRepositoryOptions.RunMigrations, genera le tabelle con tutte le colonne, ma non le colonne chiave esterna come previsto.

Come faccio a riguardare questi due insieme in modo che quando chiamo Disaster.Addresses, ho un elenco di tutti i Addresses interessata? Questo è possibile o devo usare ActiveRecord, invece, e creare le tabelle del database in primo luogo? O devo aggiungere in una colonna per l'ID del disastro in Address? Se è così, come fa questo metodo di lavoro per molti-a-molti?

È stato utile?

Soluzione

E 'possibile - basta farlo a mano è tutto. Aggiungere una proprietà a Disaster denominata "Indirizzi" e renderlo un IList <> (o si può fare IQueryable se si desidera che Lazy Load). Quando si recupera il vostro disastro, tanto per essere sicuro di recuperare i vostri indirizzi.

E 'una sorta di "manuale" - ma questa è l'idea. Sto lavorando su miglioramenti a questo che spero di spingere in una versione successiva.

E prima di chiedere il motivo per cui non ho fatto in primo luogo :) è perché non so se devo usare un molti a molti o 1-molti in base alla relazione padre / figlio. Nel tuo esempio, direi che probabilmente è 1 a molti, ma dato quello che so di indirizzi e disastri (soprattutto in Florida) probabilmente dovrebbe essere molti a molti.

Bottom Line - come sarebbe SubSonic sapere questo? Potremmo introspect entrambi gli oggetti per "bi-direzionalità", che significa che se Indirizzo ha molti disastri che si tratta di molti a molti (che è ovvio) -. Ma poi che non è felice di codifica, se vi piace DDD

Sono sporgendosi verso questa regola con un certo tipo di sostituzione che avrebbe costretto la questione. I vostri pensieri su questo sono i benvenuti:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top