SubSonic 3.0 генерация хранимых процедур
При использовании SubSonic 3.0.0.3 и StoredProcedures.tt
шаблон, сгенерированный код не скомпилируется и выдает ошибку:
... "БД" не содержит определения "Провайдер"...
Это в вызывающем методе для sproc.
StoredProcedure sp = new StoredProcedure("Company_Get", this.Provider);
Я что-то упустил или есть ошибка в шаблонах 3.0 для создания оберток вокруг хранимых процедур?
3 ответа
Я думаю, что те из нас, кто хочет использовать v3 SubSonic, находятся на переднем крае. Мне также нужно было сгенерировать код с помощью context.tt. Это исправило мою проблему. Это действительно классная штука, но скриншоты и документы не успевают за тем, как быстро развивается продукт.
public ProcedureParameters Parameters
{
get
{
return sp;
}
set
{
sp = value;
}
}
# region "Constructors"
public ExecuteProcedures(int ParameterLength, string ConnectionString):base(true,ConnectionString)
{
sp = new ProcedureParameters(ParameterLength);
strConnection = ConnectionString;
}
#endregion
# region "Execute Procedures"
public bool InvokeProcedure(string ProcedureName, SqlTransaction SqlTrn, SqlConnection con)
{
SqlCommand Sqlcmd = new SqlCommand();
try
{
Sqlcmd.CommandType = CommandType.StoredProcedure;
Sqlcmd.Connection = con;
Sqlcmd.Transaction = SqlTrn;
Sqlcmd.CommandText = ProcedureName;
Sqlcmd.Parameters.AddRange(sp.ParameterCollection);
Sqlcmd.ExecuteNonQuery();
return true;
}
catch (Exception e)
{
con.Close();
SqlTrn.Rollback();
throw new Exception("Error Occured :-" + e.Message, e);
}
finally
{
Sqlcmd.Dispose();
}
}
public bool InvokeProcedure(string ProcedureName)
{
SqlCommand Sqlcmd = new SqlCommand();
SqlConnection con = new SqlConnection(strConnection);
try
{
Sqlcmd.CommandType = CommandType.StoredProcedure;
Sqlcmd.Connection = con;
Sqlcmd.CommandText = ProcedureName;
Sqlcmd.Parameters.AddRange(sp.ParameterCollection);
con.Open();
Sqlcmd.ExecuteNonQuery();
return true;
}
catch (Exception e)
{
throw new Exception("Error Occured :-" + e.Message, e);
}
finally
{
con.Close();
Sqlcmd.Dispose();
con.Dispose();
}
}
Я уверен, что вы получили ответ на это несколько лет назад, но вам нужно запустить все шаблоны ActiveRecord, включая Struct и Context.