1.7新增功能
[来源] 达内 [编辑] 达内 [时间]2012-10-16
借助于扩展方法的功能,这一版本的改进可以让数据库操作变得更简单方便,在数据库操作相关会给你一种全新的体验
借助于扩展方法的功能,这一版本的改进可以让数据库操作变得更简单方便,在数据库操作相关会给你一种全新的体验.主要改进有以下几点:
以上的一系列扩展都是直接能操作数据,而不再需引用相关条件对象或数据库上下文对象,让数据操作变得更简单灵活.
- 条件表达式可以直接和string进行组合,从而更灵活地创建复杂的查询条件
- 扩展Load_方法,可以直接在值对象的基础上获取相关ID数据对象
- 扩展一系的查询方法,可直接在string的sql上进行数据操作,包括查询获取查询对象数据.在操作过程完全不需要借助于其他对象来处理.
- 扩展可以直接在存储过程对象进行执行操作
对象获取和保存
123var emp = 3.Load_<Employee>();
emp.Notes +=
"_test"
;
emp.Save_();
以上就是简单地根据ID值获取对象,修改并保存.由于扩展方法容易导致和其他方法冲突,所以在方法添加了_以便区分.
SQL执行
在原来的版本时处理一些SQL执行,必须借助于一些对象.就是必须创建一个SQL执行对象来处理SQL.但在1.7版中就不再需要这样做,直接在一个SQL的String基础上就能执行操作.
1"delete * from employees"
.Execute();
以上是简单地执行一个delete的sql语,当然也可以执行一个查询并返回一个对象列表
1234foreach
(var item
in
"select * from employees"
.List<Employee>())
{
Console.WriteLine(item.FirstName);
}
查询需要设置相关参数
1234foreach
(var order
in
"select * from orders where employeeid=@p1"
.Parameter(
"p1"
, 3).List<Order>())
{
Console.WriteLine(
"orderid:{0}\t orderdate:{1}"
, order.OrderID, order.OrderDate);
}
存储过程执行
123CustOrderHist coh =
new
CustOrderHist();
coh.CustomerID =
"ALFKI"
;
coh.ExecProc_();
只需要创建一个存储过程描述对象,设置好相关参数值就可以直接执行处理,当然也可以执行并返回一个查询结果.
123456CustOrderHist coh =
new
CustOrderHist();
coh.CustomerID =
"ALFKI"
;
foreach
(var data
in
coh.ExecProcToObjects_<CustOrderHistData>())
{
Console.WriteLine(
"{0}\t{1}"
, data.ProductName, );
}
对象条件和string描述的条件整合
在原有的条件表达式中处理复杂的SQL查询变得比较麻烦,实际情况下一些复杂的条件的确没有直接SQL来得直观,因此新版条件表达式可以直接和string描述的条件整合并产生新的表达式对象进行数据操作.
1234567Expression exp =
new
Expression();
exp &= Order.orderDate >=
"1996-7-1"
;
exp &=
" employeeid in (select employeeid from employees where region=@p1)"
.Add(
"p1"
,
"WA"
);
foreach
(var order
in
exp.List<Order>())
{
Console.WriteLine(
"orderid:{0}\t orderdate:{1}"
, order.OrderID, order.OrderDate);
}