使用CSLA .NET框架构建数据访问层

CSLA .NET是一个功能强大的对象数据访问框架,它提供了一套丰富的对象模型和数据绑定机制,使得开发者能够更加高效地构建企业级应用程序。本文将介绍如何使用CSLA .NET框架和CslaGen工具来构建数据访问层,并实现数据绑定到Windows Forms DataGridView控件。

CSLA.NET框架提供了多种对象类型,其中EditableRootListBase(简称ERLB)是专为与Windows Forms DataGridView(简称DGV)控件进行数据绑定而设计的。ERLB是一个根对象列表,它允许单独保存列表中的每个对象,这与DGV保存每一行数据的行为相匹配。

本文将通过一个“品牌与型号”的示例项目,展示如何使用CSLA .NET框架和CslaGen工具来构建数据访问层。在这个项目中,每个品牌是多个型号的父对象,品牌名称在数据库中是唯一的,而型号名称在同一品牌下也是唯一的。

技术细节

CslaGen是一个代码生成工具,它可以生成CSLA.NET框架的数据访问层代码。虽然CslaGen目前(截至2009年3月)还不支持DynamicRootList的生成,但通过一些简单的修改,可以使用CslaGen生成的EditableRootCollection和EditableSwitchable对象类型来实现DynamicRootList和DynamicRoot。

本文的项目示例包括了CSLA 3.0.5的对象代码,并在.NETFramework 2.0和Visual Studio 2008下构建。项目使用了Microsoft SQL Server 2005,但也可以使用Express版本。

数据库设计

示例项目的数据库名为Warehouse,它包含了两个表:品牌表和型号表。品牌表的主键是BrandID,它是型号表的外键。价格列在SQL Server中定义为money类型,在.NET Framework中使用Decimal类型。

CslaGen支持乐观并发控制,如果在SQL表中包含了timestamp类型的列,CslaGen会自动处理乐观并发。在SQL Server中,timestamp类型实际上是一个版本计数,从0开始,每次行更新时增加。

对象设计

虽然CslaGen目前还不支持DynamicRootList,但本文的项目示例包括了一个CslaGen文件(Warehouse.xml),使用了EditableRootCollection和EditableSwitchable对象类型。通过一些修改,可以将这些生成的文件转换为DynamicRootList和DynamicRoot对象。

BrandColl是一个Brand对象的根集合,它是一个DynamicRootList,由DynamicRoot对象组成。因此,Brand也是一个根对象。Brand对象是ModelColl集合的父对象,ModelColl是一个Model对象的集合。

使用案例

在UI(用户界面)层面,使用“主”和“详细”来命名,而在BO(业务对象)层面,使用实际的对象名称。为了重用,只需要将BrandColl、Brand、ModelColl和Model替换为自己的对象名称。为了进一步提高可重用性,应该将其制作成一个组件。

代码生成与业务对象定制

CslaGen代码生成和业务对象定制是本文的第二部分,将详细介绍如何使用CslaGen生成代码,并对其进行定制以满足项目需求。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485