Salve a tutti, sono alle prese con il mio primo progetto che usa NHibernate per persistere gli oggetti di dominio sul DB. Ho un problema sul mapping di una proprietà della mia classe che è definita di tipo Object e che viene poi valorizzata a runtime con due possibili differenti classi, che hanno proprietà diverse che vanno salvate su campi diversi della tabella.
Da quanto ho capito leggendo e postando in giro
dovrei usare il tag any ma non ho idea di come fare precisamente!
Qualcuno sa come risolvere questo problema?? Grazie.
Ciao,
non ti so aiutare nello specifico perchè parliamo di uno scenario che non ho mai affrontato, però penso che il seguente post possa aiutari.
NHibernate Mapping - <any/>
Tipicamente in casi simili utilizzo una classe base invece di System.Object e poi mappo tutto con la strategia table-per-hierarchy.
NHibernate Mapping – Inheritance
MaxMercury:Grazie.
Prego!
Matteo
-- Matteo BagliniWeb: http://www.makesimple.net/Blog: http://blogs.ugidotnet.org/bmatte
Buon Giorno Matteo,
Grazie per la risposta, in fine per aggirare il problema ho creato una classe base che ho fatto ereditare alle due classi
la quale espone tutti gli attributi che mi servono.
Alla classe che esponeva l'attributo di tipo System.Object ho aggiunto una proprietà del tipo BaseClass che ho creato
ed ho mappato quella nel file XML.
Meno male che la microsoft ha inventato le Partial Class altrimenti stavo fresco...
Il post di Ayende lo avevo scovato googlando ma lui ha differenti tabelle non è esattamente quello che devo fare io.
Visto che ci sono vorrei aprofittarne per farti un altra domanda.
Nel file di configurazione di NHibernate, o meglio, programmaticamente (dato che chiamando il progetto da VB6 non ne vuole sapere di leggere le configurazioni dal file, penso per un problema di localizzazione, dovrei copiare l'xml nella cartella dell'exe di vb6, ma ci provo più avanti...), ho impostato la proprietà "query.substitutions" = "true 'X', false Null, yes 'Y', no 'N'"
e altre combinazioni, per i valori true e false, ma non ne vuole sapere di funzionare, mette sempre 1 e 0, sapresti dirmi il perchè??
ahh a proposito, l'istruzione
configuration.AddAssembly(GetType(SgateGAS.tipoMessaggio).Assembly)
serve per caricare il file di mapping della classe specifica?? come funziona?? cerca nel progetto un file con il nome tipoMessaggio.hbm.xml ??
tnx!!!!