SetSpCommand
От: ylab  
Дата: 21.12.06 10:13
Оценка:
Имеем:

хранимую процедуру 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; ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.