1。下载并安装Grove
到http://grove.91link.com 上下载GroveKit 2.1。这个版本是for VS2005、fromwork2.0的。
将下载的压缩包GroveKit2.1.zip解压后,得到GroveKitSetup.msi。按提示进行安装。安装主要是进行解压。在安装路径中运行Install.bat进行对VS2005的注册。注册后,运行VS2005,我们可以在工具栏的“工具”中发现新增了“Grove Tool Kit”。在安装路径中有一个Grove.dll,我们在项目中需要添加此引用。
2。新建实体类
新建数据源
在Grove Tool Kit中点击“Add a datasource”,将新建一个数据源。修改该数据源的属性Name及ConnectionStrin。在弹出的对话框中设置好数据源后,将会自动生成连接字符串。
创建实体类
在“Grove Tool Kit”中将会出现该数据源的表及视图。双击Customers表,可以得到该表的实体类。点击“Save in Project”将会把该实体类加入到项目中。
代码:
namespace DataModel
{
using System;
using Grove.ORM;
[DataTable("Customers")]
public class Customers
{
String _CustomerID;
String _CompanyName;
String _ContactName;
String _ContactTitle;
String _Address;
String _City;
String _Region;
String _PostalCode;
String _Country;
String _Phone;
String _Fax;
[KeyField("CustomerID")]
public String CustomerID
{
get{return this._CustomerID;}
set{this._CustomerID=value;}
}
[DataField("CompanyName")]
public String CompanyName
{
get{return this._CompanyName;}
set{this._CompanyName=value;}
}
[DataField("ContactName")]
public String ContactName
{
get{return this._ContactName;}
set{this._ContactName=value;}
}
[DataField("ContactTitle")]
public String ContactTitle
{
get{return this._ContactTitle;}
set{this._ContactTitle=value;}
}
[DataField("Address")]
public String Address
{
get{return this._Address;}
set{this._Address=value;}
}
[DataField("City")]
public String City
{
get{return this._City;}
set{this._City=value;}
}
[DataField("Region")]
public String Region
{
get{return this._Region;}
set{this._Region=value;}
}
[DataField("PostalCode")]
public String PostalCode
{
get{return this._PostalCode;}
set{this._PostalCode=value;}
}
[DataField("Country")]
public String Country
{
get{return this._Country;}
set{this._Country=value;}
}
[DataField("Phone")]
public String Phone
{
get{return this._Phone;}
set{this._Phone=value;}
}
[DataField("Fax")]
public String Fax
{
get{return this._Fax;}
set{this._Fax=value;}
}
}
}
2。数据访问层
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using Grove;
using Grove.ORM;
using DataModel;
namespace DALFactory {
public class BaseDAL {
private static string _connstring = ConfigurationManager.AppSettings["DBConnString"];
/// <summary>
/// 新增
/// </summary>
/// <param name="obj"></param>
public static void Insert(object obj) {
ObjectOperator oo = new ObjectOperator(_connstring);
oo.BeginTranscation();
try {
oo.Insert(obj);
oo.Commit();
}
catch (System.Exception e) {
oo.Rollback();
throw e;
}
oo.Dispose();
}
/// <summary>
/// 删除
/// </summary>
/// <param name="obj"></param>
public static void Delete(object obj) {
ObjectOperator oo = new ObjectOperator(_connstring);
oo.BeginTranscation();
try {
oo.Remove(obj);
oo.Commit();
}
catch (System.Exception e) {
oo.Rollback();
throw e;
}
oo.Dispose();
}
/// <summary>
/// 修改
/// </summary>
/// <param name="obj"></param>
public static void Update(object obj) {
ObjectOperator oo = new ObjectOperator(_connstring);
oo.BeginTranscation();
try {
oo.Update(obj);
oo.Commit();
}
catch (System.Exception e) {
oo.Rollback();
throw e;
}
oo.Dispose();
}
/// <summary>
/// 选择所有
/// </summary>
/// <param name="objType"></param>
/// <returns></returns>
public static EntityData SelectAll(Type objType) {
return SelectByFilter(objType, string.Empty);
}
/// <summary>
/// 依筛选器进行选择
/// </summary>
/// <param name="objType"></param>
/// <param name="filter">筛选器</param>
/// <returns></returns>
public static EntityData SelectByFilter(Type objType, string filter) {
ObjectOperator oo = new ObjectOperator(_connstring);
EntityData data = oo.GetObjectSource(new ObjectQuery(objType,filter));
oo.Dispose();
return data;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Grove;
using DataModel;
namespace DALFactory {
public class CustomersDAL{
public static void Insert(Customers cust) {
BaseDAL.Insert(cust);
}
public static void Delete(Customers cust) {
BaseDAL.Delete(cust);
}
public static void Update(Customers cust) {
BaseDAL.Update(cust);
}
public static EntityData SelectAll() {
return BaseDAL.SelectAll(typeof(Customers));
}
public static EntityData SelectByFilter(string filter) {
return BaseDAL.SelectByFilter(typeof(Customers), filter);
}
}
}
3。表现层
在“web.config”中加入连接字符串
<appSettings>
<add key="DBConnString" value="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=sophia"/>
</appSettings>
在“Default”页面中加入一个dataview。
GridView1.DataSource = CustomersDAL.SelectAll().CurrentTable;
GridView1.DataBind();