Ecco la mia situazione ..
Supponiamo di avere le seguenti entità del modello, che rappresentano tavoli singoli per conto proprio:
Film [Movie_Id, Titolo, Valutazione, ..]
Attori [Actor_Id, nome, cognome, ..]
Direttore [Director_Id, nome, Cognome, ..]
E un'altra entità/tabella denominata "Raccomandazioni", che ri presenta raccomandazioni tra gli utenti all'interno di un sito web. L'idea è che una raccomandazione potrebbe essere di qualsiasi tipo, ad esempio qualcuno che raccomanda un attore o qualcuno che raccomanda un film. In sostanza, la tabella dovrebbe essere simile a questa:
Raccomandazioni [Recommendation_Id, object_id, Tipo_Oggetto, ..]
Ed ecco quello che sono bloccato in. Come posso mappare queste relazioni in NHibernate con Fluent? Intendo .. durante la mappatura, non posso specificare il tipo (a quale tabella si riferisce) perché è determinato in fase di esecuzione, ma non posso fare affidamento solo sull'Id 'causa di per sé non può implicare a quale tabella appartiene .
Per esempio, immaginate questo record sulla tabella Raccomandazioni:
Recommendation_Id - OBJECT_ID - Tipo_Oggetto
83001--401--- "M"
Fondamentalmente sto memorizzare un identificatore char (in questo caso " M "sta per tabella" Movies ") per sapere a quale tabella appartiene Object_Id. Non riesco a memorizzare Object_Id senza Object_Type ..
Mapping di più tabelle con Fluent NHibernate
Come commenti finali, vorrei aggiungere che ho visto tutto il table-per-class, table-per-subclass, table-per-concrete-class esempi, ma credo che nessuno di questi si adatti a questa situazione, poiché Movies_Id, Actors_Id, Directors_Id, ... sono tutti diversi tra loro, quindi è Recommendations_Id. Voglio dire, non esiste un'eredità di classe classe-figlio di base qui, non condividono affatto l'ID.
Spero di essere chiaro. Grazie in anticipo.
Va notato che fluente NHibernate non supporta attualmente molti-to-any che è quello che ho pensato che questo avrebbe fatto. A meno che non mi sbagli, il salvataggio di un consiglio quando aggiorni un film non avverrà senza problemi.La risposta di Daniel era più vicina a qualsiasi altra cosa potessi trovare; o) – JasonCoder
Se vuoi mappare l'altro lato della relazione 'any', come in" Movie.Raccomandations ", credo che potresti farlo con un' -to-many' e un attributo 'where =" Object_Type = 'M' "' sulla raccolta, che puoi fare con Fluent NHibernate. –