J'ai essayé d'exécuter les procédures stockées MySQL avec les templates linq dans Subsonic3. J'ai ajouté quelques fonctions au fichier MySQL.ttinclude qui semble avoir généré les classes de référence de la procédure stockée. Cependant quand je lance le code et appelle les procédures stockées je semblons toujours obtenir des résultats NULL:Est-ce que quelqu'un a eu du succès avec Subsonic3, linq, MySQL et Stored Procedures
public DataSet SPTotalCallsByHour(int period)
{
rt.rtDB ee = new rt.rtDB();
StoredProcedure sp = ee.Totals_By_Hour(period.ToString());
sp.Execute();
return (DataSet)sp.Output;
}
Quelqu'un at-il des procédures stockées MySQL travaillant avec Subsonic3? Si oui, pouvez-vous expliquer comment vous les avez fait fonctionner?
Avez-vous utilisé les fichiers ttinclude directement de la version subsonic 3?
Ce sont les deux fonctions que j'ai ajoutées au fichier MySQL.ttinclude:
List<SPParam> GetSPParams(string spName){
var result=new List<SPParam>();
MySqlCommand cmd = new MySqlCommand();
using(conn=new MySqlConnection(ConnectionString))
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = spName;
cmd.CommandType = CommandType.StoredProcedure;
try
{
MySqlCommandBuilder.DeriveParameters(cmd);
}
catch
{
}
if(cmd.Parameters.Count > 0)
{
foreach(MySqlParameter param in cmd.Parameters)
{
SPParam p = new SPParam();
p.SysType = GetSysType(param.MySqlDbType.ToString());
p.DbType = param.DbType.ToString();
p.Name = param.ParameterName;
p.CleanName=CleanUp(p.Name);
result.Add(p);
}
}
conn.Close();
}
return result;
}
List<SP> GetSPs(){
var result=new List<SP>();
string[] spNames = GetSPList();
foreach(string spName in spNames){
var sp=new SP();
sp.Name=spName;
sp.CleanName=CleanUp(sp.Name);
sp.Parameters=GetSPParams(sp.Name);
result.Add(sp);
}
return result;
}
Pourquoi avez-vous un bloc de capture vide? Ce n'est presque jamais bon. –
J'étais juste paresseux ... je n'aurais pas encore terminé cette classe .. J'ajoute généralement mon traitement d'exception plus tard. –