代码下载: 敏捷学院技术资源库

1.引用

view source print?
1 // TODO: Use Enterprise Library Data Block
2   
3 using Microsoft.Practices.EnterpriseLibrary.Data;
4   
5 using 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?
001 private 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   
03 using Microsoft.Practices.EnterpriseLibrary.Data;
04   
05 using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
06   
07  //#2
08   
09 private Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>();
10   
11 private DataAccessor<Product> productAccessor;
12   
13 //#3
14   
15 private 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)使用数据访问器接收数据相关推荐

  1. 基于BC95的数据转发,利用Python实现UDP接收数据,TCP转发数据

    基于BC95的数据转发,利用Python实现UDP接收数据,TCP转发数据 文章信息 环境信息 系统概览 基于Python的UDP(服务端)数据接收 1. UDP接受的数据如何读取 文章信息 撰写日期 ...

  2. 大数据之-Hadoop3.x_Yarn_公平调度器---大数据之hadoop3.x工作笔记0146

    然后我们再来看公平调度器,公平调度器是facebook开发的一个调度器, 上面的容量调度器是雅虎开发的对吧. 然后我们看看公平调度器的特点,可以看到,它要做到的就是公平,他也可以有多个队列,但是同一个 ...

  3. 大数据之-Hadoop3.x_Yarn_容量调度器---大数据之hadoop3.x工作笔记0145

    然后我们再来看一下capacity scheduler,这个是Apache hadoop的默认调度器. 可以看到这个容量调度器,是yahoo雅虎开发的一个多用户调度器,多个用户都可以 把任务发过来对吧 ...

  4. python 抓网卡数据包_Python选择网卡发包及接收数据包

    当一台计算机上有多个网卡时,需要选择对应IP地址的网卡进行发送数据包或者接受数据包. 1.选择网卡发包(应用scapy):plface=conf.route.route("××.××.××. ...

  5. axios传递数据到java_axios 传输与springboot后台接收数据

    axios 使用不再说明,直指常见问题元凶: 1.get(url[, config])和post(url[, data[, config]]),注意参数 get是在config中设置params{pa ...

  6. 监视和调整Linux网络协议栈:接收数据

    Table of Contents 有关监视和调整Linux网络协议栈的建议 总览 详细外观 网络设备驱动程序 初始化 网络设备初始化 启动网络设备 监控网络设备 调整网络设备 SoftIRQ 什么是 ...

  7. 网络——在网络上发送,接收数据

    问题 创建并加入一个网络会话是一回事,但如果不能发送或接收任何数据那么网络会话有什么用呢? 解决方案 当玩家连接到会话时,你可以在一个PacketWriter流中存储所有想要发送的数据.完成这个操作后 ...

  8. 监控和调整Linux网络协议栈的图解指南:接收数据

    Table of Contents 入门 最初设定 数据到达 网络数据处理开始 网络数据处理继续 协议栈和用户态套接字 结论 监视和调整Linux网络协议栈:接收数据(图解):https://rtoa ...

  9. 前台传递JSON数据,后台spring mvc如何接收数据

    如何传递JSON数据到后台? 方式一, 使用post请求,请求类型为:application/x-www-form-urlencoded; charset=UTF-8 $.ajax({url : ur ...

最新文章

  1. 从IEEE754标准谈C语言浮点数据类型
  2. Windows下给PHP安装redis扩展
  3. 数据库视频(三)——总结篇
  4. Origin使用手册/笔记第二部分:数据的录入
  5. BZOJ.3495.[PA2010]Riddle(2-SAT 前缀优化建图)
  6. 6个用好大数据的秘诀
  7. 做出产品不难,做好产品必须高手
  8. 计算机网络 组网设计 论文,计算机网络组网毕业设计(校园局域网设计毕业论文)...
  9. C++执行shell命令
  10. 计算机组成原理第一章练习题(答案详解)
  11. c语言程序设计银行存取款管理系统,银行存取款管理系统设计
  12. winform打包应用程序-setup安装包
  13. 抠图算法(交互式)以及证件照的自动抠图
  14. Java 常量池详解(一)字符串常量池
  15. java 视频边下边播_video src,如何边加载边播放?
  16. svn执行update操作后出现:Error : Previous operation has not finished; run 'cleanup' if it was interrupted.
  17. R7-7735HS和i5-13500H 差距 锐龙R77735HS和酷睿i513500H对比
  18. 数值分析基础工具使用Matlab绘制双曲线
  19. 手机html特效菊花的彩铅画,彩铅教程 | 菊花的画法步骤
  20. 桌面一片空白(不显示图标)的盗号木马清除指南

热门文章

  1. nginx+tomcat
  2. 短信怎么控制modbus设备?
  3. Python脚本--Apache配置文件
  4. 模板:保留小数位后多少位
  5. Android studio无法连接识别检测各种模拟器和手机的问题 (万能方案)。
  6. xshell 设置屏幕字体
  7. 随时更新———个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客
  8. 高并发系统—通用设计方法
  9. Android魔法(第三弹)—— 一步步实现对折页面
  10. 洛谷 P3368 【模板】树状数组 2(线段树区间加单点查找)