请记住,我是 C# 和 OOP 的新手,所以如果这对某些人来说似乎是一个简单的问题,我提前道歉。我将回顾我的代码并寻找方法来客观化重复代码并为其创建一个类,以便我可以简单地重用该类。话虽如此,我还不想学习 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 ,这似乎是合适的接口,但我该如何使用它呢?
编辑添加:
我将 Rorschach 的答案标记为 THE answer,因为他/她解决了我的 IEnumerable 问题。我也理解需要适当的 DAL 和 BLL 层。我试图达到的就是那个。我可以使用数据集和表适配器构建 DAL,最终得到一个强类型数据集。但是,我觉得有点脱离了代码。从我上面给出的代码开始,我一直在寻找一种直接构建 DAL 的方法。也许我没有正确地措辞我的问题或我所追求的。
无论如何,罗夏最接近回答我的实际问题。谢谢。