日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EnterpriseLibrary数据访问(4)使用数据访问器接收数据

發布時間:2024/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EnterpriseLibrary数据访问(4)使用数据访问器接收数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼下載: 敏捷學院技術資源庫

1.引用

view source print?
1// TODO: Use Enterprise Library Data Block
2??
3using Microsoft.Practices.EnterpriseLibrary.Data;
4??
5using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;

2.創建訪問器

view source print?
1// TODO: Create private fields for Data accessors
2??
3????????private DataAccessor<Category> categoryAccessor;
4??
5????????private DataAccessor<Product> productAccessor;

3. 初始化訪問器

view source print?
001private void InitializeAccessors()
002????????{
003??
004????????????Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>();
005???
006????????????// TODO: Create category accessor 使用存儲過程
007??
008????????categoryAccessor = db.CreateSprocAccessor("GetCategories",
009??
010????????????????MapBuilder<Category>.MapAllProperties()
011??
012????????????????.Map(p => p.Name).ToColumn("CategoryName")
013??
014????????????????.Map(p => p.ID).ToColumn("CategoryID")
015??
016????????????????.Build());
017???
018??
019????????????// TODO: Create product accessor 使用sql語句
020??
021????????????productAccessor =
022??
023????????????????db.CreateSqlStringAccessor(
024??
025????????????????"SELECT ProductID,ProductName,UnitPrice,LastUpdate FROM Products WHERE? CategoryID=@CategoryID",
026??
027????????????????new GetProductsByIdParameterMapper(db),
028??
029????????????????MapBuilder<Product>
030??
031????????????????.MapAllProperties()
032??
033????????????????.Map(p => p.Name).ToColumn("ProductName")
034??
035????????????????.Map(p => p.ID).ToColumn("ProductID")
036??
037????????????????.Map(p => p.UnitPrice).WithFunc(ApplyTax) //對價格的單獨處理
038??
039????????????????.DoNotMap(p => p.LastReviewed)//不映射這個字段
040??
041???
042??
043????????????????.Build());
044??
045????????}
046??
047???
048????????private decimal ApplyTax(IDataRecord record)
049??
050????????{
051??
052????????????var unitPrice = (decimal)record["UnitPrice"];
053??
054????????????if (numTax.Value > 0)
055??
056????????????{
057??
058????????????????unitPrice += unitPrice * numTax.Value / 100;
059??
060????????????}
061??
062????????????return unitPrice;
063??
064????????}
065??
066???
067??
068???//生成sql參數的類
069??
070??public class GetProductsByIdParameterMapper : IParameterMapper
071??
072????{
073??
074????????private readonly Database db;
075??
076????????public GetProductsByIdParameterMapper(Database db)
077??
078????????{
079??
080????????????this.db = db;
081??
082????????}
083??
084????????public void AssignParameters(System.Data.Common.DbCommand command, object[] parameterValues)
085??
086????????{
087??
088????????????InitializeParameters(command);
089??
090????????????db.SetParameterValue(command, "@CategoryID", parameterValues[0]);
091??
092?????????????
093??
094????????}
095??
096???
097????????private void InitializeParameters(System.Data.Common.DbCommand command)
098??
099????????{
100??
101????????????db.AddInParameter(command, "@CategoryID", System.Data.DbType.Int32);
102??
103????????}
104??
105????}

4. 執行返回數據

view source print?
01?// TODO: Use a Data Accessor to retrieve Categories
02??
03????????????var categories = categoryAccessor.Execute();
04??
05????????????cmbCategory.DataSource = categories.ToList();
06??
07// TODO: Retrieve Products by Category
08??
09????????????var selectedCategory = (Category)cmbCategory.SelectedItem;
10??
11????????????if (selectedCategory == null)
12??
13????????????????return;
14??
15????????????var products = productAccessor.Execute(selectedCategory.ID);
16??
17????????????dgProducts.DataSource = products.ToList();

附 簡單總結:如果數據庫中的字段和實體字段的名稱相同

view source print?
01//#1
02??
03using Microsoft.Practices.EnterpriseLibrary.Data;
04??
05using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
06??
07?//#2
08??
09private Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>();
10??
11private DataAccessor<Product> productAccessor;
12??
13//#3
14??
15private List<Product> GetProducts()
16??
17????????{
18??
19?????????????
20??
21????????????productAccessor =
22??
23??????????????db.CreateSqlStringAccessor(
24??
25??????????????"SELECT ProductID as id,ProductName,UnitPrice,LastUpdate FROM Products",
26??
27??????????????MapBuilder<Product>
28??
29??????????????.MapAllProperties()
30??
31??????????????//.Map(p=>p.ID).ToColumn("ProductID")
32??
33??????????????.DoNotMap(p=>p.CategoryID) //不映射這個字段
34??
35??????????????.Build()
36??
37??????????????);
38??
39???
40??
41????????????return productAccessor.Execute().ToList();
42??
43????????}

轉載于:https://www.cnblogs.com/xingquan/archive/2011/07/08/2100916.html

總結

以上是生活随笔為你收集整理的EnterpriseLibrary数据访问(4)使用数据访问器接收数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。