350 messaggi dal 08 febbraio 2009
Salve.

Supponiamo che abbia un database con 3 colonne:

1) Articolo
2) Precodice
3) Codice

dove la colonna "articolo" in realtà è la concatenazione delle colonne precodice e codice.
Per dirla in termini di .NET

public string Articolo
{
   return string.Concat(Precodice, Codice);
}


E' possibile fare in modo che NHibernate faccia questo:

1) Quando legge da DB, mi popoli solo i campi "Precodice" e "Codice", poi è il .NET a calcolare il campo "Articolo" (come sopra)

2) Quando scrive sul DB, invece, deve memorizzare tutte le proprietà, "Articolo" compreso.


Grazie in anticipo.


Per chi si chiedesse il motivo di questa richiesta, il mio scopo è il seguente: vedere se c'è modo di passare "gradualmente" una procedura scritta circa 20 anni fa in COBOL con qualcosa come 20.000 sorgenti... Per cui "migrarla" al .NET per argomenti sarebbe più comodo (è un gestionale completo, quindi potrei passare prima l'inserimento ordini, poi la fatturazione,...). La cosa fondamentale è quella di poter riprodurre la struttura attuale (mediante ODBC) e un domani migrare tutto su un DB serio (dove toglierei dal DB i campi inutili come "Articolo", imposterei le foreign key,...).
Uhm... non mi sono mai trovato in questa situazione, però direi che qualcosa come
public string Articolo
{
    get { return string.Concat(....); }
    private set { }
}
dovrebbe fare al tuo caso.

m.
350 messaggi dal 08 febbraio 2009
In questo modo, se ricordo bene, vuol dire che la proprietà "Articolo" è di sola lettura... E lato .NET è tutto abbastanza chiaro.

Ma se faccio così, la proprietà Articolo viene gestita da NHibernate? O meglio, solo mettendo una proprietà come ReadOnly su .NET il framework di NHibernate capisce che deve ignorare il campo quando passa da DB->NET ma deve scrivere comunque il valore nella fase NET->DB?

Pensavo bisognasse intervenire in qualche modo anche lato xml... Appena ho un attimo vedo di fare un test per capire se funziona.

Grazie mille!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.