功能描述:
在執行玩一條sql語句後如果直接將結果的DataTable或Datsset,DataReader這些東西省掉直接返回我們一個業務對象豈不是更爽。Enterprise Library 5 已經爲我們實現了這樣的功能,其原理圖如下:
首先定義一個業務對象UserInfo
public class UserInfo
{
public int Id { set; get; }
public string UserName { set; get; }
public string Password { set; get; }
}
數據訪問代碼如下,實現功能是執行Sql查詢後返回一個對象的數據或返回一個集合對象的數據 /// <summary>
/// 獲取單個對象數據
/// </summary>
/// <param name="id">Id</param>
/// <returns></returns>
public UserInfo GetUserInfo(int id)
{
string cmdText = string.Format("select * from UserInfo where id={0}", id);
var accrssor = db.CreateSqlStringAccessor(cmdText, MapBuilder<UserInfo>.BuildAllProperties());
var customerData = accrssor.Execute();
return customerData.FirstOrDefault<UserInfo>();
}
/// <summary>
/// 獲取一個對象集合數據
/// </summary>
/// <returns></returns>
public List<UserInfo> GetUserList()
{
string cmdText = "select * from UserInfo";
var accrssor = db.CreateSqlStringAccessor<UserInfo>(cmdText, MapBuilder<UserInfo>.BuildAllProperties());
var data = accrssor.Execute();
return data.ToList<UserInfo>();
}
其中:CreateSqlStringAccessor 是應用Sql語句情況
如果是存儲過程則要使用:CreateSprocAccessor
短短四行代碼搞定以前我們手工將DataSet填充到業務對象的繁雜過程,代碼看起來優美很多。也便於代碼生成器生成符合規則的代碼文件.