Пожалуйста, имейте в виду, что я новичок в C # и ООП, поэтому я прошу прощения заранее, если для некоторых это кажется легким вопросом. Я возвращаюсь к своему коду и ищу способы объективизировать повторяющийся код и создать для него класс, чтобы я мог просто повторно использовать этот класс. При этом я пока не собираюсь изучать NHibernate или другие ORM. Я даже не хочу изучать LINQ. Я хочу взломать это, чтобы узнать.
В основном я использую тот же самый бит кода для доступа к своей базе данных и заполняю раскрывающийся список полученными значениями. Пример:
protected void LoadSchools()
{
SqlDataReader reader;
var connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
var conn = new SqlConnection(connectionString);
var comm = new SqlCommand("SELECT * FROM [Schools] ORDER BY [SchoolName] ASC", conn);
try
{
conn.Open();
reader = comm.ExecuteReader();
cmbEditSchool.DataSource = reader;
cmbEditSchool.DataBind();
cmbEditSchool.Text = "Please select an existing school to edit...";
if (reader != null) reader.Close();
}
finally
{
conn.Dispose();
}
}
Я использую один и тот же кусочек кода снова и снова по всей моей программе на разных страницах. Чаще всего я заполняю раскрывающийся список или поле со списком, но иногда я заполняю сетку, лишь слегка изменяя запрос.
Мой вопрос: как я могу создать класс, который позволит мне вызывать хранимую процедуру вместо того, чтобы вручную использовать запросы, подобные моему примеру, и заполнять мои различные элементы управления? Можно ли обойтись только одним методом? Мне нужно только начать с выбора. Я читал об IEnumerable, который кажется подходящим интерфейсом для использования, но как мне его использовать?
Отредактировано, чтобы добавить:
Я отметил ответ Роршаха как ответ, потому что он / она обратился к моему многочисленному вопросу. Я также понимаю необходимость правильного слоя DAL и, возможно, BLL. То, к чему я пытался добраться, это было. Я могу создать DAL, используя наборы данных и адаптеры таблиц, что в итоге дает мне строго типизированный набор данных. Тем не менее, я чувствую себя немного удаленным из кода. Я искал простой способ создания DAL, начиная с кода, который я дал выше. Возможно, я не правильно формулирую свой вопрос или то, что мне нужно.
Во всяком случае, Роршах подошел ближе всего к ответу на мой настоящий вопрос. Благодаря.