Domanda

Il mio modello di dominio utilizza System.Net.Uri per rappresentare gli URL e System.Drawing.Color per rappresentare i colori. Nel db, gli uris sono semplicemente nvarchars e i colori sono valori rgb web (esadecimali).

Usando NHibernate, c'è un modo per mappare tra questi valori usando un mappatore personalizzato?

Non ho bisogno di eseguire una query su questi elementi, ma sarebbe bello se potessi.

Qualsiasi aiuto è molto apprezzato.

È stato utile?

Soluzione

Ciò di cui hai bisogno sono i tipi di utente. Implementa IUserType o IComplexUserType (ci sono alcune interfacce in più per soddisfare altre esigenze).

Ci sono alcuni esempi:

Usando il tipo utente, puoi associare qualsiasi classe a qualsiasi numero di colonne di qualsiasi tipo. Implementare il tipo di utente significa implementare la mappatura tra di loro.

La mappatura potrebbe apparire così:

<property "MyColor" type="ColorUserType">
  <column name="R"/>
  <column name="G"/>
  <column name="B"/>
</property>

Altri suggerimenti

Puoi utilizzare Transformers . Li ho usati per una query nativa che trasforma il risultato in un oggetto personalizzato. Nel tuo caso, puoi regolare le proprietà get per trasformarle nella tua rappresentazione Uri e Color.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top