转: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); }

        }

    }



你可能感兴趣的:(基本操作)