Вернуть SQLDataReader с использованием SubSonic? - PullRequest
0 голосов
/ 17 апреля 2009

Я обновляю веб-приложение и решил использовать SubSonic, так как он кажется потрясающим, и я хочу научиться этому :) Я пытаюсь вернуть SQLDataReader из метода, который у меня уже есть, и сделал это так

public SqlDataReader GetAllCarTypes_dr()
{
    return (SqlDataReader)new Query("tblCarType").ExecuteReader();
}

Просто проверить, это правильный способ сделать это? Или есть лучший дозвуковой синтаксис, такой как ExecuteSQLDataReader()?

Ответы [ 3 ]

2 голосов
/ 17 апреля 2009

Способ, который вы указали, является одним из способов сделать это. Однако функции ExecuteSQLDataReader() нет, потому что она избыточна.

Поскольку SQLDataReader уже реализует интерфейс IDataReader, нет смысла создавать функцию, специфичную для SQLDataReader.

Вы можете рассмотреть возможность возврата интерфейса таким же образом, как это делает SubSonic, например:

public IDataReader GetAllCarTypes_dr()
{
    return new Query("tblCarType").ExecuteReader();
}

и выполнение задания в вашей логике:

SQLDataReader reader = GetAllCarTypes_dr();

Я бы посчитал это лучшим способом сделать это.

0 голосов
/ 27 мая 2009
private void CreateDynamicControls()
{


    panGvHolder.Controls.Clear();

    Query qry = Northwind.Product.CreateQuery();
    qry.Columns.AddRange(Northwind.Product.Schema.Columns);
    qry.WHERE("UnitPrice > 15").AND("UnitsInStock < 20 ");
    //WHERE("UnitPrice > 15").AND("UnitsInStock < 30 ");



    using (IDataReader rdr = qry.ExecuteReader())
    {
        Response.Write("<table>");
        while (rdr.Read())
        {
            Response.Write("<tr>");
            for (int i = 0; i < rdr.FieldCount; i++)
            {
                Response.Write("<td>");
                Response.Write(rdr[i].ToString() + " ");
                Response.Write("<td>");
            } //eof for 
            Response.Write("</br>");
            Response.Write("</tr>");
        }
        Response.Write("<table>");
    }
} //eof method
0 голосов
/ 17 апреля 2009

Ну, это компилируется, верно? Шучу.

Эта ссылка дает немного больше объяснения о том, когда использовать, который: http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/a8ed157d-e93c-4a8d-83a4-78645614b4ac

Просто убедитесь, что вы закрываете считыватель (читатели?) Где-нибудь, чтобы они не оставляли открытые соединения висящими вокруг.

...