Mtodo DeriveParameters

sabato 04 luglio 2009 - 17.37

ale1971 Profilo | Newbie

Ciao,

Ho realizzato in progetto indipendente dal tipo di base dati con
DbProviderFactory.

Dopo una serie di problemi ora funziona correttamente con SQL server e su
Oracle (catastrofica la gestione dei paramentri).

Non trovo ora il metodo DeriveParameters della classe DbCommandBuilder???

Come posso fare?
Grazie

Jeremy Profilo | Guru

Ciao Alessandro.
Quel metodo, nella classe DbCommandBuilder, non esiste, probabilmente, proprio per lo scopo specifico della classe DbProviderFactory.
Non hai proprio modo di definirli in fase di progettazione??

Facci sapere...
Ciao

ale1971 Profilo | Newbie

Ciao Jeremy,
grazie della risposta.

No, vorrei rendere la vita facile a chi utilizza il componente WebService per l'accesso remoto a dati generici almeno svincolandolo dal dover passare i paramentri di Output (caso Oracle).

Ho trovato una soluzione e te mostro di seguito, nel caso ti dovesse servire.


public string DeriveParameters(DbCommand command, DbCommandBuilder commandBuilder)
{
MethodInfo method;
string res = "";

Type commandType;

commandType = commandBuilder.GetType();
method = commandType.GetMethod("DeriveParameters");

if (method != null)
{
method.Invoke(null, new object[] { command });

foreach (DbParameter Par in command.Parameters)
res += "{ " + Par.ParameterName + ", " + Par.DbType.ToString() + ", " + Par.Direction.ToString() + " } \r\n";
}

return res;
}


E' come se il metodo esistesse ma non venisse esposto?!?
Ciao

Jeremy Profilo | Guru

Si ... in effetti .... se non avessi già risolto, probabilmente, ti avrei suggerito anche io l'uso delle Reflection.
Ma penso che si sarebbe potuto risolvere anche implementando, in una classe, un'interfaccia, che esponesse quel metodo, ed ereditando dai vari tipi di oggetto del CommanBuilder.
Qualche passaggio in più ma, probabilmente, meno oneroso.

Ciao

ale1971 Profilo | Newbie

Perchè meno oneroso?

Se non ti fa perdere troppo tempo mi piacerebbe un mini-esempio della soluzione che mi hai indicato tu.


Ciao e grazie mille.

Jeremy Profilo | Guru

Ok ... se non hai fretta ... nel fine settimana vedo di farlo
Ciao

ale1971 Profilo | Newbie

Sei troppo gentile,
non perdere tempo, mi bastano due dritte senza fretta e poi provo io.

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5