DotNetToscana
User Group Toscano su .NET

[NHibernate] Mappare attributo di tipo System.Object

rated by 0 users
This post has 2 Replies | 1 Follower

Top 25 Contributor
Posts 2
MaxMercury Posted: 01-27-2010 17.25

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.

Top 10 Contributor
Male
Posts 67

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! Wink

Ciao,

Matteo

Top 25 Contributor
Posts 2

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!!!!

 

Page 1 of 1 (3 items) | RSS
Powered by Community Server (Commercial Edition), by Telligent Systems