Как использовать хранимые процедуры с ASP.NET DataGrid - PullRequest
1 голос
/ 06 апреля 2009

Вопрос также может быть:

Как вы предпочитаете вызывать хранимые процедуры для заполнения DataGrid?

В настоящее время я занимаюсь разработкой страницы ASP.NET, и я хотел бы знать, является ли Linq правильным способом для использования с моей базой данных SQL Server.

ADO тоже выглядит неплохо, поэтому я просто хотел бы получить отзыв о том, что является наиболее подходящим в общих чертах ..

LINQ, конечно, облегчает вызов хранимой процедуры, но я как бы застрял в попытке найти правильный способ поместить набор результатов из хранимой процедуры в сетку данных.

Не думай, что я хочу сделать foreach там .. но все примеры, кажется, указывают на это .. или я просто запутался

Я прочитал эту запись в блоге , и эту , кажется, что пути впереди - foreach и бесчисленные методы ... и я немного запутался по поводу всего этого.

Я также думаю о учебном пособии по созданию базы данных фильма , в которой в этом случае просто не нужна DataGrid.

Что самое простое, самое точечный способ доступа к простому SQL Процедура и возврат заполненной сетки данных или модели представления данных, подобной сетке данных?

Ответы [ 2 ]

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

Я бы предложил использовать Linq to SQL. Вы правы, считая, что вам не следует использовать циклы foreach - все, что вам нужно, это привязка данных.

например. В вашем коде может быть событие DataBind, которое выполняет что-то вроде этого:

protected void GridView1_DataBanding(object sender, EventArgs e)
{
            // Get an instance of our generated DataContext class.
            DAL.AdventureWorks db =
                new DAL.AdventureWorks(
                    WebConfigurationManager.ConnectionStrings["AdventureWorksCS"].ConnectionString);

            // Get a strongly typed List from the Stored Procedure output
            List<DAL.MySPResult> myData = db.MySP().ToList();

            GridView1.DataSource = myData;
}

Вам потребуется настроить хранимую процедуру в классах Linq to SQL, перетащив ее на поверхность конструктора.

Надеюсь, это поможет.

1 голос
/ 06 апреля 2009

Использование SqlDataSource - самый простой способ. Если вы изолируете все ваши вызовы БД на бизнес-уровне, вы можете просто создать ObjectDataSource, который вызвал бы хранимую процедуру. Хотя это может показаться излишним, но это полезный навык, и очень легко реализовать, когда вы освоите его.

Вам действительно не нужен LINQ или foreach и т. Д., Если вы будете использовать элемент управления с привязкой к данным, поскольку вам не нужно будет заполнять его вручную (для этого и нужна привязка данных).

Еще одна вещь - я бы настоятельно рекомендовал бы использовать GridView вместо DataGrid; он более новый, имеет гораздо больше автоматизированных функций и является более функциональным и привлекательным средством управления. Дайте мне знать, если вам нужен пример кода.

...