我的项目要求之一是创建一个DLL或帮助程序,它将包含我与数据库的所有交互,并使用ADO而不是EF。
这是我到目前为止所拥有的:
namespace repository
{
public class access
{
public string connectionString { get; set; }
public access()
{
connectionString = "Data Source=KISHGAL-PC\\SQLEXPRESS;database=carl;Persist Security Info=True;User ID=sa;Password=123456ca;MultipleActiveResultSets=true";
}
public DataSet getData()
{
string query = "select * from department";
SqlDataAdapter adapter = new SqlDataAdapter(query, connectionString);
DataSet temp = new DataSet();
adapter.Fill(temp, "test");
return temp;
}
}
}
我无法找到任何好的示例和DataSet的用法(我的客户希望我使用DataSet)。所以我想问我是否走在正确的轨道上?
我通过这样做来调用控制器中的所有内容:
[HttpGet]
public ActionResult test()
{
List<departments> dep = new List<departments>();
foreach (DataRow dr in cont.getData().Tables["test"].Rows)
{
dep.Add(new departments()
{
id = Convert.ToInt32(dr["id"]),
dname = Convert.ToString(dr["dname"])
});
}
return View(dep);
}
到目前为止,我能够从我的视图中获取行并显示它们,但我想知道如何优化我的代码或者是否有任何我错过的内容?
答案 0 :(得分:1)
你最好将你的查询分开一点;您可以将创建,更新,删除和插入的方法作为类的方法。下面的代码T是一个泛型类型,您可以使用它将类型T的列表传递给该方法。任何类型基本上,你的查询语句应该分开 - 这样你就可以有一个封装的dll - 和DB表,无论它们的访问是否相同 - 查询被传递到dll方法,你可以使用它任何ER模型的基础库。还有其他方法可以做到这一点DAL就是这个功能所指的。
{{1}}