Имеем:
хранимую процедуру INSERTDATA с одним входным параметром (STR10) и одним выходным (ID)
public class Data
{
public int? ID;
public string str10;
public Data(string str) { this.str = str; }
}
Data data = new Data("test");
using(DbManager db = new DbManager())
{
db.SetSpCommand("INSERTDATA", db.CreateParameters(data)).ExecuteNonQuery("ID", data);
}
это приводит к 'Parameter mismatch for procedure INSERTDATA'
Происходит это потому, что db.CreateParameters(data) создаёт два входных параметра,
затем SetSpCommand вызывает CreateSpParameters(), которая по хранимке с помощью GetSpParameters создаёт один входной и один выходной параметр
и затем (строка 850) при несовпадении IDbDataParameter.Direction
if (param.Direction != p.Direction)
{
System.Diagnostics.Debug.WriteLine(string.Format(
"Stored Procedure '{0}'. Parameter '{1}' has different direction '{2}'. Should be '{3}'.",
spName, name, param.Direction, p.Direction), typeof(DbManager).Namespace);
param.Direction = p.Direction;
}
а почему не p.Direction = param.Direction; ?