SubSonic 3.0 генерация хранимых процедур - PullRequest
0 голосов
/ 04 августа 2009

При использовании SubSonic 3.0.0.3 и шаблона StoredProcedures.tt сгенерированный код не компилируется и выдает ошибку:

... «DB» не содержит определения «Provider» ...

Это метод вызова для sproc.

StoredProcedure sp = new StoredProcedure("Company_Get", this.Provider);

Я что-то упустил или есть ошибка в шаблонах 3.0 для создания оберток вокруг хранимых процедур?

Ответы [ 3 ]

1 голос
/ 06 июля 2011
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();
    }
}
1 голос
/ 04 августа 2009

Я думаю, что те из нас, кто хочет использовать v3 SubSonic, находятся на переднем крае. Мне также нужно было сгенерировать код с context.tt. Это исправило мою проблему. Это действительно классная штука, но скриншоты и документы не успевают за тем, как быстро развивается продукт.

0 голосов
/ 24 мая 2011

Я уверен, что вы получили ответ на это несколько лет назад, но вам нужно запустить все шаблоны ActiveRecord, включая Struct и Context.

...