Subsonic 基本使用

查询
SubSonic2.1版本 – 例出3种查询。
Product product 
=   new  Select().From < Product > ()
              .Where(Product.ProductIDColumn).IsEqualTo(
4 )
  .ExecuteSingle
< Product > ();
Product product 
=  DB.Select().From < Product > ()
  .Where(
" ProductID " ).IsEqualTo( 4 )
  .ExecuteSingle
< Product > ();
Query query 
=   new  Query(Product.Schema);
query.WHERE(
" ProductID=4 " ).ORDER_BY( " ProductID asc " );
IDataReader dr 
=  Product.FetchByQuery(query);
DataSet product 
=   new    Query(Product.Schema).WHERE( " ProductID=4 " ).
  ORDER_BY(
" Prod  uctID asc " ).ExecuteDataSet(); 
  
关联查询
DataSet product 
=   new  Select(
  Product.ProductNameColumn,
  Category.CategoryNameColumn
  ).From
< Product > ()
  .InnerJoin(Category.CategoryIDColumn, Product.CategoryIDColumn)
  .Where(Category.CategoryIDColumn).IsGreaterThan(
4 )
  .ExecuteDataSet(); 
注意. InnerJoin(f2, f1) 的使用方法。
分页查询
List
< Product >  products  =   new  Select().From < Product > ()
    .Where(Product.ProductIDColumn).IsEqualTo(
4 )
    .Paged(
1 30 )
    .ExecuteTypedList
< Product > ();
  
查询—返回对象
ExecuteReader();   返回DataReader 
ExecuteScalar();   返回对象
ExecuteScalar
< string > ();  返回泛型对象
ExecuteSingle
< Product > (); 返回表实体对象
ExecuteTypedList
< Product > ();  返回泛型表实休数据集
ExecuteDataSet();  返回DataSet 
ExecuteJoinedDataSet
< 强数型数据集 > (); 返回关联查询 DataSet 
Execute(); 返回执行后,数据更新条数
  
SQL关键词
IsEqualTo(obj) 
//  等于 value
IsBetweenAnd(obj1, obj2)  //  [字段1] BETWEEN 值1 AND 值2
StartsWith   //  LIEK '1%‘ 
EndsWith     //  LIEK '%1‘
IsGreaterThan  //  [字段1] > 值1
IsGreaterThanOrEqualToIsGreaterThan  //  [字段1] >= 值1
IsLessThan  //  [字段1] < 值1
IsLessThanOrEqualToIsLessThan  //  [字段1] <= 值1
WhereExpression  /  AndExpression  //  Expression 表示括号
C#:
.Where(
" 1 " ).IsGreaterThan( 1 )
  .And(
" 2 " ).IsGreaterThanOrEqualTo( 2 )
  .AndExpression(
" 3 " ).IsLessThan( 3 )
  .AndExpression(
" 4 " ).IsLessThanOrEqualTo( 4 ).And( " 5 " ).StartsWith( " 5 " )
  .AndExpression(
" 6 " ).EndsWith( " 6 " )
  .ExecuteSingle
< Product > ();
SQL:WHERE 
1   >  @1AND  2   >=  @ 2  AND ( 3   <  @ 3 ) AND ( 4   <=  @ 4  AND  5  LIKE @ 5 ) AND ( 6  LIKE @ 6 )
  
修改
Product product 
=   new  Product( 4 );
product.ProductName 
=   " amo " ;
product.Save();
int  i  =   new  Update(Product.Schema)
  .Set(Product.ProductNameColumn).EqualTo(
" Chai -- Amo " )
  .Where(Product.ProductIdColumn).IsEqualTo(
1 )
  .Execute();
  
添加
Product product 
=   new  Product();
product.ProductName 
=   " my xiaoli " ;
product.SupplierID 
=   1 ;
product.CategoryID 
=   1 ;
product.Discontinued 
=   true ;
//
product.Save();
int  i  =   new  Insert().Into(Product.Schema,
  
" ProductName "
  
" SupplierID "
  
" CategoryID "
  
" Discontinued“
)
.Values(
" my amo " 1 1 1 ).Execute();
  
删除
int  i  =   new  Delete ().From < Product > ()
  .Where(Product.ProductIDColumn). IsEqualTo(
1 )
  .Execute();
  
事务1
 List
< Insert >  queries  =   new  List < Insert > ();
 queries.Add(
new  Insert().Into(Product.Schema).Values( " product1 " ));
 queries.Add(
new  Insert().Into(Product.Schema).Values( " product2 " ));
 queries.Add(
new  Insert().Into(Product.Schema).Values( " product3 " ));
 queries.Add(
new  Insert().Into(Product.Schema).Values( " product4 " ));
 queries.Add(
new  Insert().Into(Product.Schema).Values( " product5 " ));
 queries.Add(
new  Insert().Into(Product.Schema).Values( " product6 " ));
 queries.Add(
new  Insert().Into(Product.Schema).Values( " product7 " ));
 
// execute in a transaction 
 SqlQuery.ExecuteTransaction(queries);
事务2
using  (SharedDbConnectionScope sp  =   new  SharedDbConnectionScope())
{
    
using  (TransactionScope scope  =   new  TransactionScope())
    {
        
//  coding.
        scope.Complete();
    }

  
减少对ActiveRecord的依赖 
MyProduct product 
=   new  Select(
  Product.ProductNameColumn, 
  Category.CategoryNameColumn
    ).From
< Product > ()
   .InnerJoin(Category.CategoryIDColumn, Product.CategoryIDColumn)
   .Where(Category.CategoryIDColumn).IsGreaterThan(
4 )
   .ExecuteSingle
< MyProduct > ();
string  cname  =  product.CategoryName; 
string  pname  =  product.ProductName;
  
自定义MyProduct实体类 
 
public   class  MyProduct : ActiveRecord < MyProduct >  {
        
public   string  CategoryName {
            
get  {  return  GetColumnValue < string > (Category.Columns.CategoryName); }
            
set  { SetColumnValue(Category.Columns.CategoryName, value); }
        }
        
public   string  ProductName {
            
get  {  return  GetColumnValue < string > (Product.Columns.ProductName); }
            
set  { SetColumnValue(Product.Columns.ProductName, value); }
        }
    }

转载于:https://www.cnblogs.com/zhdonghu/archive/2009/06/10/1500189.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值