你走在正確的道路上。
你指的是數據訪問層,簡稱DAL。
它是n-tier architecture model的一部分(在簡單版本中有3層 - 顯示,業務邏輯和數據訪問層)。
其基本概念是將演示文稿,邏輯和數據分爲應用程序的3個不同部分。
至於數據訪問層,通常你會有一個靜態或單例類負責連接業務層和數據。這個類將包含CRUD操作的方法 - 創建,讀取,更新和刪除數據。您需要爲每個操作和每個數據實體創建方法。
一種方法我看到所有的時間是這樣的:
public static class DAL
{
private static string _ConnectionString = null;
static DAL() // A static constructor to initialize the connection string
{
_ConnectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
}
public static DataSet GetCategories()
{
var ds = new DataSet();
var sql = "SELECT * FROM Categories";
using (var con = new SqlConnection(_ConnectionString))
{
using (var cmd = new SqlCommand(sql, con))
{
using (var adapter = new SqlDataAdapter(cmd))
{
adapter.Fill(ds);
}
}
}
return ds;
}
public static int DeleteCategory(int categoryId)
{
int rowsEffected = 0;
var sql = "DELETE FROM Categories WHERE Id = @Id";
using (var con = new SqlConnection(_ConnectionString))
{
using (var cmd = new SqlCommand(sql, con))
{
cmd.Parameters.Add("@Id", SqlDbType.Int).Value = categoryId;
con.Open();
cmd.ExecuteNonQuery();
}
}
return rowsEffected;
}
}
等。正如你所看到的,有很多重複的代碼。
這意味着更長的代碼,牧民的維護,並且如果出於某種原因您希望支持其他類型的數據庫(如遷移到MySql,Oracle或其他),您將必須非常努力地改變所有供應商特定的類DAL(SqlConnection,SqlCommand等)。
這些問題正是我寫ADONETHelper的原因。我已經使用了它幾年(主要是以更早,不同形式),現在我覺得它已經足夠成熟,可以上市了。它目前在MIT的許可下,意味着它是完全免費的,您可以下載您的副本並根據您的需要進行更改。
你應該選擇使用它,你的DAL類或許應該是這樣的:
public static class DAL
{
private static IDBHelper _DB;
static DAL() // A static constructor to initialize _DB
{
// initialize connection string from config file
var connectionstring = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
_DB = DBHelperFactory.GetInstance(DataBaseType.SQLServer, connectionstring);
}
public static DataSet GetCategories()
{
var sql = "SELECT * FROM Categories";
return _DB.FillDataSet(sql, CommandType.Text);
}
public static int DeleteCategory(int categoryId)
{
var sql = "DELETE FROM Categories WHERE Id = @Id";
var param = _DB.CreateParameter("@Id", ADONETType.Int, categoryId);
return _DB.ExecuteNonQuery(sql, CommandType.Text, param);
}
}
正如你看到的,代碼重複下降到最低限度,並遷移到不同的數據庫是不斷變化的那麼簡單靜態構造函數使用不同的DataBaseType
。當然,如果你使用的是供應商特定的SQL,你也必須改變它。
嘗試使用嚮導設置對象「SQL DATA SOURCE」 –
對不起Emanuel Pirovano,但我可以在哪裏找到嚮導設置? – vicserna1997
把你的項目窗口中的對象,並點擊「配置...」,它會問你一些關於你的數據庫鏈接的信息,你想要什麼命令 –