.net通用数据库访问组件SQL Artisan应用简介1
SQL Artisan是基于C#实现的通用数据库访问组件;编写SQL Artisan的主要目的不并是灵活地处理不同数据库操作,而是通过SQL Artisan更灵活和高效的编写数据库访问代码。组件除了提供O/R M功能外,还提供一系列的SQL语句相关对象;可以让你在不同情况下选择适合的方式来访问数据库。对象化的条件对象除了提供了对象操作的方便性和灵活性外,还保持了传统SQL语句条件的编写方式;给使者带来更方便的操作方式。对数据函数的支持更是组件一大特色,组件以扩展的方式对数据库函数进行支持;通过函数的调用可以让你创建更复杂的查询条件满足你实际的需要。
NorthWind数据库的应用
以下是通过组件Query对象做一个相关查询的应用(代码中还提供简单的O/R M读取操作),为了方便直接使用了MSSQL的Northwind数据。下面代码主要常见的订单查询,查询涉及了三个表:Orders,Employees,Customers;查询过程中还涉及了两个查询条件:相关客户和相关雇员。
private void LoadData()
{
using(IDataSession session = MappingContainer.ConfigContainer.OpenSession())
{
//获取一个关联查询对象
IQuery query = session.CreateQuery(Orders.TBL.INNER(Customers.TBL,Orders._CustomerID)
&Orders.TBL.INNER(Employees.TBL,Orders._EmployeeID));
//设置查询获取的字段列表
query.Selects= new FieldAdapter[]{Orders._ALL,
Customers._CompanyName.As("CompanyName"),
(Employees._FirstName+Employees._LastName).As("EmployeeName")};
Expression exp = new Expression();
if(DroCustomers.SelectedValue !="")//当选择相关客户时添加相应查询条件
{
exp &= Orders._CustomerID.At(Orders.TBL) == DroCustomers.SelectedValue;
}
if(DroEmployees.SelectedValue != "")//当选择相应雇员时添加相应查询条件
{
exp &= Orders._EmployeeID.At(Orders.TBL) == int.Parse(DroEmployees.SelectedValue);
}
query.Expreesion =exp;//设置查询的查询条件
session.Open();
this.OrdersGrid.DataSource = query.ExecuteDataSet().Tables[0];
this.OrdersGrid.DataBind();
}
}
从上面代码看到组件在创建一个关联表是很简单的事情。
Orders.TBL.INNER(Customers.TBL,Orders._CustomerID)
&Orders.TBL.INNER(Employees.TBL,Orders._EmployeeID)
由于是基于对象的操作,从而解决在编写过程一些小错误的发生;如:表名编写错或关键字编写错等。
条件的编写同样也是极为方便
if(DroCustomers.SelectedValue !="")//当选择相关客户时添加相应查询条件
{
exp &= Orders._CustomerID.At(Orders.TBL) == DroCustomers.SelectedValue;
}
上面的代码就是把条件以and的方式累加起来。