Group: microsoft.public.it.sql




Subject: Clr UDT Serialization
From: Andrea Benedetti
Date: 4/28/2007 6:50:33 PM
Ciao Roberto, "Roberto Valenti" <RobertoValenti@discussions.microsoft.com> ha scritto nel messaggio news:4276902B-D170-4399-BE7E-0FF8BC4CDA0B@microsoft.com... > Grazie Andrea, > il cast sulla colonna potrebbe andare bene, non so' quanto possa influire > sulle performance, in uno scenario con molti dati. Sicuramente richiedere una conversione ha sicuramente un impatto sulle performance. Potresti valutarlo facendo qualche test sul tuo UDT. > l' udt che utilizzo identifica un valore decimal + una stringa che > descrive > l' unita' di misura. Ok. > Ho effettuato molte riceche ma non ho trovato esempi che risolvono questo > problema. > Avevo pensato di creare una routine che crea una rappresentazione custom > del > decimal in modo da effettuare questa conversione prima della > serializzazione, > utilizzando un identificatore per i numeri negativi (negativi -> 0, > positivi > 1) pero' non so' come convertire i decimali. Si, forse una soluzione potrebbe essere quella di lavorare sulla Read e sulla Write dell'interfaccia IBinarySerialize. Avevo letto qualcosa anche io che suggeriva proprio questa strada. Oppure, sicuramente una porcheria, potresti memorizzarti, anche tramite colonna bit la negatività o la positività del tuo decimal, quindi, in fase di select effettuare un ordinamento prima su questo campo, quindi sul tuo UDT. In tutta franchezza, però, mi sembra una bella forzatura... Che dici? Ciao! -- Andrea Benedetti Microsoft MVP - SQL Server www.absistemi.it - www.ugiss.org http://blogs.ugidotnet.org/ab http://mvp.support.microsoft.com http://italy.mvps.org

Subject: Clr UDT Serialization
From: Andrea Benedetti
Date: 5/1/2007 2:41:15 PM
Ciao Roberto, "Roberto Valenti" <RobertoValenti@discussions.microsoft.com> ha scritto nel messaggio news:0B2FDEA9-F395-4CAD-A7DB-3E660BE0D39E@microsoft.com... [cut] > Una soluzione un po' meno pulita : > memorizzare il valore in stringa con un determinato formato : > > es : > > public void Write(System.IO.BinaryWriter w) > { > > int sign = (this._value < 0 ? 0 : 1); > w.Write(sign); > w.Write(this._value.ToString("00000000000.0000")); > } > > public void Read(System.IO.BinaryReader r) > { > int sign = r.ReadInt32(); > this._value = Decimal.Parse(r.ReadString()); > } > > quest' ultima sembra funzionare. Non mi sembra così sporca questa... Per me è ok! Grazie di aver condiviso la tua soluzione Ciao! -- Andrea Benedetti Microsoft MVP - SQL Server www.absistemi.it - www.ugiss.org http://blogs.ugidotnet.org/ab http://mvp.support.microsoft.com http://italy.mvps.org