在 15 分钟内构建数据访问层





0/5 (0投票)
2006年2月15日
9分钟阅读

154294
在 15 分钟内,您就可以使用 Microsoft 的 Enterprise Library 构建一个完整的数据访问层 (DAL)。
下载链接
引言
在本文中,您将学习如何使用Microsoft的企业库,通过CodeSmith和.NetTiers模板库,在15分钟内构建一个数据访问层。
数据访问层,以下简称DAL,是应用程序功能中封装所有数据库交互的层。通常,这种类型的代码是手工编写的,并且需要专门的知识,不仅是对.NET的了解,还有对特定数据访问例程的了解。为应用程序编写DAL代码是构建软件中最单调、耗时、重复且可能充满bug的部分之一。
在本文中,我们将使用SQL Server中的Northwind示例数据库,但这些示例也适用于任何数据库。当然,在阅读本文之后,您将不再认为为应用程序编写DAL是单调且耗时的,而是快速、简单且容易的!
如果您按照本文的步骤进行,您将在不到1分钟的时间内创建一个完整的最优实践数据访问层(另外14分钟用于首次下载软件)。
代码生成,简要概述
代码生成,即使用软件工具生成代码,并不是一个新概念。事实上,代码生成已经存在很长一段时间了。在本文中,我将使用CodeSmith作为工具来生成DAL的代码和T-SQL脚本。
CodeSmith是一款开发者生产力工具,它允许开发者使用模板来控制代码的格式和期望的输出。CodeSmith的优势在于——软件开发者仍然通过模板完全控制所创建的代码。模板为人们提供了创建新的、有趣的、可重用的代码和生成库的机会,例如本文中使用的.NetTiers模板。
步骤 1 – 设置
第一步是获取必要的工具(CodeSmith)和模板(.NetTiers)。CodeSmith是一款商业开发者工具,但我们有一个30天的免费试用版可以用于本文的目的。
下载并安装CodeSmith
http://www.codesmithtools.com/
CodeSmith自带了许多内置模板,下一个服务包将包含本文中显示的.NetTiers模板。
现在CodeSmith已安装,请下载.NetTiers模板库
下载CodeSmith的.NetTiers模板库
在.NetTiers网站上,点击左侧导航栏的“Latest Download”链接;然后,点击页面顶部的“available for download”。这将带您到另一个页面,您可以在其中下载最新的Windows MSI安装程序。
最后一步是确保您已设置好SQL Server数据库,并有一个可以连接到数据库的连接字符串。
步骤 2 – CodeSmith
下载并安装CodeSmith后,您应该可以在“所有程序 | CodeSmith 3.1 | CodeSmith Studio”中找到它。在使用.NetTiers模板之前,您需要熟悉CodeSmith。
如引言中所述,CodeSmith是一款基于模板的代码生成工具。CodeSmith右侧有一个名为“Template Explorer”(模板浏览器)的窗口。模板浏览器提供了一种快速简便的方式来访问您已安装或编写的模板。
为了解释CodeSmith的其余部分,我们需要一个模板。通过双击模板浏览器中的“Hashtable.cst”模板来打开它。
“Hashtable.cst”是CodeSmith随附的一个出色的示例模板,用于生成以.NET Hashtable
类型为基类的数据类型的强类型集合。在解释模板之前,让我们快速查看CodeSmith中的另一个窗口——“Properties”(属性)窗口。
“Properties”窗口允许您设置模板的属性。使用Hashtable.cst模板时,我们需要设置一些通用元素,例如生成的ClassName
、ItemType
和KeyType
。例如,如果您想创建一个由integer
访问的、类名为PersonCollection
的强类型Person
对象集合,您需要将ClassName
设置为PersonCollection
,将ItemType
设置为Person
,并将KeyType
设置为int
。现在,您只需单击CodeSmith工具栏中的“Run”(运行)按钮即可生成此强类型集合的源代码。
如果您花点时间检查“Hashtable.cst”模板文件,您可能会说:“这看起来很像ASP.NET”。您是正确的。CodeSmith模板的模式类似于ASP.NET页面,并共享许多相似的理念。然而,ASP.NET页面用于生成HTML,而CodeSmith模板用于生成源文件或其他文本文件。
关于CodeSmith最重要的一点是,CodeSmith不会通过强制您接受生成的代码来限制您的创造力。由于它是基于模板的,代码输出完全由您控制。
步骤 3 – 生成 DAL
现在您已对CodeSmith有了基本了解,我想向您展示.NetTiers模板。
请记住,CodeSmith的理念是它能让您更快、更少缺陷地编写代码。.NetTiers模板更进一步,为您创建一个DAL,该DAL遵循Microsoft团队的同名推荐模式与实践。
首先,我们需要将.NetTiers模板添加到CodeSmith模板浏览器中。
- 在模板浏览器中,单击“Open Folder”(打开文件夹)图标以浏览包含模板的文件夹。
- 转到安装.NetTiers的文件夹。在我的计算机上,它是
>C:\Program Files\SerialCoder\NetTiers 0.9.2 - Caribert\Templates\
- 一旦在模板浏览器中将此文件夹创建为快捷方式,请展开它并选择“NetTiers.cst”。
- 现在.NetTiers模板已安装,您需要配置一个数据源。在打开“NetTiers.cst”模板的情况下,打开“Properties”(属性)窗口,然后通过单击省略号来配置“Source Database”(源数据库)。
- 这将打开“Database Picker”(数据库选择器)。我们将创建一个新的数据源,因此请在“Database Picker”(数据库选择器)中单击省略号以打开“Data Source Manager”(数据源管理器)。在下面的屏幕截图中,这是它应该的样子(选择一个让您快速知道正在处理哪个数据库的名称)。
- 测试连接以确保它正常工作,然后通过单击“OK”退出这些对话框。确保选中了新的数据源。
- 最后,将“EntireDatabase”属性设置为“True”,将“NameSpace”属性设置为“Demo”,并将“OutputDirectory”属性设置为您希望生成文件所在的目录。如果输出目录不存在,您需要创建它。
完成这些步骤后,您的“NetTiers.cst”模板的属性窗口应该与下面的屏幕截图相似(已突出显示更改)。
在本文中,我们不会展示.NetTiers或CodeSmith的全部功能,但我们已经完成了足够的操作来生成DAL。单击CodeSmith工具栏中的“Run”(运行)按钮来生成代码。
步骤 4 – 查看生成的代码
打开Visual Studio .NET,如果您按照上述说明进行操作,您应该会在c:\NetTiers\Northwind_Demo\目录中找到一个“Demo.sln”文件。
花点时间浏览Visual Studio中的解决方案和项目文件。
您应该在解决方案中找到3个项目
- Demo – 包含您将在应用程序中使用的类以与数据库交互的主库。
- Demo.DataAccessLayer – 包含数据访问实现代码的库。
- Demo.DataAccessLayer.SqlClient – 包含Microsoft模式与实践类用于与数据库交互的库。
步骤 5 – 编译……完成!
接下来,保持Visual Studio打开状态,编译项目。
恭喜!您现在拥有一个遵循Microsoft模式与实践组推荐的最佳实践来处理数据库的数据访问层。
您现在可以在其他Visual Studio .NET项目中使用您新的数据访问层。例如,以下是检索、更新然后删除员工记录的代码。
using Demo.DataAccessLayer.SqlClient; // Select by primary key Employee employee = SqlDataRepository.EmployeeProvider.GetByEmployeeID(13); employee.FirstName = "John"; employee.LastName = "Doe"; // Save changes SqlDataRepository.EmployeeProvider.Save(employee); // Delete record SqlDataRepository.EmployeeProvider.Delete(employee);
有关如何使用生成的DAL的更多信息,请参阅此处的.NetTiers手册
http://www.nettiers.com/nettiers-manual-v1.aspx
请记住,所有数据访问层代码都是由模板生成的,因此之后当您更改数据库结构时,您可以简单地从模板重新构建DAL。此外,您甚至可以用自己的想法、注释、命名约定、模式等来扩展模板。
结论
CodeSmith模板的可能性仅受您自身创造力的限制。正如我在本文中所展示的,CodeSmith是一款极其强大的开发者生产力工具。结合.NetTiers模板,您可以在几分钟内为您的应用程序编写一个最优实践的数据访问层。
您也可以在此处观看此演示的视频
http://community.codesmithtools.com/r.ashx?id=1
3.1版本中添加的一个有趣的特性是简单的“值计算器”。该值计算器对使用CodeSmith节省的时间进行了保守的估算。
如上图所示,将.NetTiers模板与CodeSmith一起使用生成了91,559行代码。假设开发人员每小时大约能编写50行代码(如果我们手动编写的话),生成这些代码将需要1800小时。更进一步,假设开发人员的时间成本约为60美元/小时,CodeSmith和.NetTiers一起为您节省了1800小时的生命和为公司节省了109,000美元!
所以,获取CodeSmith……然后去要求加薪。
CodeSmith和.NetTiers资源
如果您对CodeSmith有疑问,请务必访问CodeSmith社区门户:http://community.codesmithtools.com/。CodeSmith社区门户是一个很好的资源,人们可以在这里分享模板、想法和互相帮助。
如果您有兴趣购买CodeSmith,请访问CodeSmith网站:http://www.codesmithtools.com/。在那里您会找到CodeSmith商店,您可以在那里购买许可证密钥来解锁30天的试用版。如果您有其他问题,只需发送电子邮件至sales@codesmithtools.com。
如果您对.NetTiers模板有疑问,请访问.NetTiers论坛: http://community.codesmithtools.com/forums/16/ShowForum.aspx