zoukankan      html  css  js  c++  java
  • 转: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); }
            }
        }
    
    
  • 相关阅读:
    Android学习记录(4)—在java中学习多线程下载的基本原理和基本用法①
    Android之Notification的多种用法
    通过学习制作长微博工具来了解水印的制作,及EditText中的内容在图片中换行显示
    通过短信窃听器来讲解内容提供者,内容观察者,以及无界面后台运行服务,开机启动和杀死服务后重新启动
    通过重写ViewGroup学习onMeasure()和onLayout()方法
    Android学习记录(3)—Android中ContentProvider的基本原理学习总结
    Android学习记录(2)—Android中数据库的常见操作
    Android学习记录(1)—Android中XML文件的序列化生成与解析
    Android之判断设备网络连接状态,并判断连接方式
    Android获取SD卡总容量,可用大小,机身内存总容量及可用大小的系统方法
  • 原文地址:https://www.cnblogs.com/davinci/p/1651908.html
Copyright © 2011-2022 走看看