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); }
            }
        }
    
    
  • 相关阅读:
    jQuery知识总结
    WEB架构师成长之路之2
    利用Travis CI 让你的github项目持续构建(Node.js为例)
    C#实现UDP分包组包
    win7下安装32位GoSublime Package
    爬虫部分技术要点浅析
    如何使用“依赖注入”的
    分布式ACM Online Judge 架构设计
    “容器组件服务”模型
    Maven学习
  • 原文地址:https://www.cnblogs.com/davinci/p/1651908.html
Copyright © 2011-2022 走看看