Sto iniziando a lavorare su un nuovo progetto che sarebbe molto più semplice se ci fosse un modo per rendere polimorfici diversi modelli di dati. Sto cercando di usare Entity Framework 4.0 (quando è rilasciato), ma non sono stato in grado di determinare se sarà effettivamente in grado di funzionare.Esiste un .NET Data Framework polimorfico
Ecco lo scenario di base. Sono implementato un sistema di commenti e vorrei poterlo connettere a molti tipi diversi di modelli. Forse voglio commenti sul profilo di una persona e commenti su una pagina web. Il modo in cui lo farei in passato è creare relazioni tra la tabella delle persone e la tabella dei commenti separatamente dalla relazione tra la tabella delle pagine Web e la tabella dei commenti. Penso che questo porti ad una struttura di tabelle troppo complicata nel database, comunque.
Sarebbe meglio se potessi essere in grado di aggiungere un'interfaccia agli oggetti su cui desidero aggiungere commenti e quindi semplificare la struttura della tabella nel database in un'unica relazione.
Il problema che sto incontrando è che non mi sembra di conoscere la terminologia giusta per trovare informazioni su come fare questo tipo di cose. Qualsiasi aiuto che chiunque possa fornire sarebbe molto apprezzato.
Sì, questo è esattamente il tipo di cosa a cui stavo pensando. Speravo che potesse esserci un modo per gestire il cast di tipo in modo trasparente, ma sembra che dovrò solo mordere il proiettile e farlo. In questo caso, dovrei controllare il target_object_id, così come il comment_type, che probabilmente sarà solo il System.Type dell'oggetto target. Non ho avuto bisogno di lavorare molto con quello, quindi sembra che imparerò. – Josh
Bene, questo presuppone che il tuo obiettivo è ridurre il numero di tabelle nel tuo database, che ho raccolto dalla domanda originale. Potrei essere propenso a creare invece "tabelle mapper" per ogni tipo di commento, ma mantenere comunque tutti i commenti in una tabella di commenti. Se si dispone di una tabella "post_comments" con una colonna post_id e una colonna comment_id, è possibile eseguire una query quando la propria vista o modello richiede i commenti per un particolare ID post. Non è richiesto il cast di tipo. – Jay
sì, è giusto, per ridurre il numero di tabelle e la quantità di codice che deve essere scritta. In un mondo perfetto, funzionerebbe qualcosa come i mix-in di Ruby, ma non è davvero possibile in C#. Non è un grosso problema, speravo solo che mi mancasse qualcosa. – Josh