分享
 
 
 

实践ORM,创建基于Grove的.NET应用程序(一)

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

实践ORM,创建基于Grove的.NET应用程序(一)

撰稿 林学鹏 cnlxp@msn.com

就目前大多数软件开发项目的数据都存储在关系型数据库中,开发时要求开发人员对SQL语句语法以及规则等必须很熟悉,而很多情况下,开发人员需要手写SQL语句,同时还得考虑事务处理,逻辑分析等等问题,导致整个项目中的SQL语句到处都是,对程序的可读性,可维护性都带来了阻碍,同时,当新项目加入时,很多地方又不得不重新coding一些大而复杂的相关代码,这样又何来可重用之谈呢?另外对程序员要求就高了,程序调试起来又麻烦了,又得调试程序,又得调试SQL语句,很多时候SQL语句包含了一些逻辑部分的处理,这些都是非常不科学的。

为了提高项目的灵活性,可重用性等,就必须提到OR-M(对象角色建模),个人认为OR-M的作用是解耦,在原本复杂的系统中加入OR-M一层,使得系统变得更容易维护和升级,比如在之前的系统中,更改了一个数据库字段,则相应用到该字段的所有地方都随之而改动,这有可能带来很大的工作量,而应用之后,业务逻辑层的代码几乎不用改动,相应的,调用的地方也不用改动,改动的也许仅仅只有映射的那些地方。由于本文介绍的重点不是OR-M,所以关于OR-M的具体信息见最后的参考资料。

目前,针对.NET下的ORM方式有很多,大概归纳有三种,一是实体类映射方式,二是透过XML来描述,三是XML和实体类一起用(比如MS的ObjectSpaces)

本文演示了如何使用Grove Tool Kit来创建一个基于Grove的简单Web应用程序。Grove是一套基于Microsoft .NET Framework的可重用开发组件,支持多种不同数据库项目,提供标准的二层,三层及多层等开发框架。

简介

Grove Develop Component Kit 包括 Grove Develop Component 和 Grove Tool Kit两部分;

Grove Develop Component是一套基于Microsoft .NET Framework的可重用开发组件,支持多种不同数据库项目,提供标准的二层,三层及多层等开发框架。

Grove Develop Component结合可复用面向对象软件开发原理(泛指设计模式),注重提高软件开发中的代码重用率,并使软件开发架构清晰,有利于加快软件开发速度,减低软件维护成本。

Grove Tool Kit 是针对Grove Develop Component提供的一套.NET Develop Environment的外接程序 ,能够帮助预览或生成依赖于Grove组件的可重用代码,包括数据库映射的实体类(Entity Definition Class) ,XML实体描述(XML Definition for data store)等。

Grove Tool Kit最大的特点在于可以通过工具本身调试,关联多表之间的关系,并生成多表查询的映射实体或XML映射描述。

安装

安装GroveKit要求VS.NET 2002或2003及.NET Framework 1.0或1.1,本文以.NET Framework 1.1和VS.NET 2003为例。

GroveKit的安装包(GroveKit.zip),您可以从http://grove.91link.com 获得。

安装步骤:

1. 解压缩GroveKit.zip,执行安装

2. 执行桌面上的Grove Install以完成安装任务

创建基于Grove的Web项目

在GroveKit安装结束后,打开VS.NET,在VS.NET的启动画面上,您会看到Grove Develop Kit的标志,表示GroveKit已被正确安装。

本文将以C# ASP.NET项目为例,项名WebApp1,操作系统 Windows 2000,数据库SQL Server 2000,数据库实例名:WebApp1,表结构定义如下

表名

字段

Customers

CustomerID int(4) PK

CustomerName varchar(50)

CustomerDesc varchar(200)

Addresses

AddressID int(4) PK

CustomerID int(4)

Address varchar(200)

1)在VS.NET中,打开“文件->新建->项目”,在Visual C#项目选择ASP.NET WEB应用程序,确定后生成WebApp1项目,在项目中添加文件夹Entities(实体),Managers(Façade层),EntityDB(数据库层),并添加对Grove.dll的引用,Grove.dll位于GroveKit的安装路径下,您也可以通过.NET Configuration将Grove添加到程序集缓存中。

2)在VS.NET中,打开“工具->Grove Tool Kit”,在GroveToolKit中设置数据库连接属性,并保存。

图1.设置数据库连接串

3)在当前项目路径C:\Inetpub\wwwroot\WebApp1下建立LogFiles文件夹,并配置当前Web项目的web.config(在</configuration>之前加入以下配置)

<appSettings>

<add key="DBConnString" value="Server=localhost;Uid=sa;Pwd=sa;Database=WebApp1" />

<add key="LogPath " value="c:\inetpub\wwwroot\WebApp1\LogFiles" />

</appSettings>

4)在VS.NET解决方案资源管理器中选中Entities,并在GroveToolKit中选择表名,点击GroveToolKit的toolbar中的Preview Entity Class按钮,出现该表的实体映射类预览窗口。

图2. 预览实体映射类

5)检查当前预览的实体类的namespace,此处应该改为WebApp1.Entities,点击生成文件按钮,该实体类将被生成到解决方案资源管理器当前选中的路径下。

6)重复4,5步骤生成其他表的映射实体类。

Customer.cs

using System;

using Grove.DataObject;

[DataTable("Customers")]

public class Customer

{

int _CustomerID;

string _CustomerName;

string _CustomerDesc;

[KeyField("CustomerID")]

public int CustomerID

{

get{return this._CustomerID;}

set{this._CustomerID=value;}

}

[DataField("CustomerName")]

public string CustomerName

{

get{return this._CustomerName;}

set{this._CustomerName=value;}

}

[DataField("CustomerDesc")]

public string CustomerDesc

{

get{return this._CustomerDesc;}

set{this._CustomerDesc=value;}

}

}

Address.cs

using System;

using Grove.DataObject;

[DataTable("Addresses")]

public class Address

{

int _AddressID;

int _CustomerID;

string _Address;

[KeyField("AddressID")]

public int AddressID

{

get{return this._AddressID;}

set{this._AddressID=value;}

}

[DataField("CustomerID")]

public int CustomerID

{

get{return this._CustomerID;}

set{this._CustomerID=value;}

}

[DataField("Address")]

public string CustomerAddress

{

get{return this._Address;}

set{this._Address=value;}

}

}

代码1.实体映射类

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有