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/yuanqiang/archive/2009/03/26/1422393.html
Subsonic 基本使用相关推荐
- Subsonic设置--新手上路
前言 在刚开始使用中就碰到问题:按照官方的方法配置,总是不能编译时自动生成数据访问层代码(其中一种,也可使用命令行自己生成,下面介绍).本文只要介绍了这两种配置subsonic的方法. 1.配置方法 ...
- Subsonic使用中
使用中,遇到各种奇葩问题,依依汇总. 1.引用了Subsonic层后,一运行就开始报错,提示未能找到文件!! //引用后,目标框架可能会被改变,subsonic的默认框架是2.0,请检查框架是否 ...
- subsonic mysql_Subsonic 介绍
SubSonic:一个数据层构建器(BLL) 导言 一 个易维护的应用程序,不同的类之间有不同的分工,通常分为界面层.业务层和数据访问层.虽然这一技术有利于更好地组织应用,一些开发人员不愿这么做.创建 ...
- SubSonic数据库操作
1. 选择:Select a. 表格多项查询 DataSource=DB.Select().Form(TableA).Where(TableA.ColName) .IsEqualTo(" ...
- SubSonic中RecordBaseT.Load(IDataReader dataReader)与LoadAndCloseReader(IDataReader dataReader)的使用区别...
一般情况下使用LoadAndCloseReader(IDataReader dataReader) 如果要使用Load需要自己定位记录集游标到一个有效果位置 如 User user=new User( ...
- SubSonic中的字段付值--MakeOld Update
根据设计当MakeOld后(在读取数据库后,或者手动调用),对记录(SubSonic生成的类)属性附值时,Sonic会检测这个Value是否与原来的不同,只有值不同时才会附值成功,并将该列添加到Dir ...
- SubSonic框架使用图解
简介:SubSonic框架是一个优秀的.开源的ORM映射框架,同时提供符合自身需要的代码生成器. 官方下载地址:http://www.subsonic.org/pages/download.jsp 明 ...
- subsonic 配置及使用
就是这么简单-没有必要关心要那些表或配置表和对象的映射关系.在实践中,配置看起来如下: <configuration> <!-- 1 - Connection String(s) - ...
- subsonic 3.0 mysql_SubSonic 3.0新特性
1.引言 大多数数据访问程序包提供从"数据库外"访问,意思是这种方式将您的数据库的表在应用程序中用对象表示.这种方式可以在大多数案例中工作,但是关系理论与面向对象编程将变的不一致, ...
- SubSonic:一个对象的引用是必需的对于非静态字段
昨天配置完SubSonic,生成网站时冒出来一个莫名其妙的问题: 一个对象的引用是必需的对于非静态字段,方法或属性'xxx.dnt_usergroups.System.get 很奇怪!打开报错的文件看 ...
最新文章
- Nature子刊:残留DNA在土壤中含量丰富并且模糊了对土壤生物多样性的估计
- R语言构建catboost模型:构建catboost模型并基于网格搜索获取最优模型参数(Select hyperparameters)、计算特征重要度
- java tcp端口复用_windows server tcp端口重用问题
- mysql 列累加计算
- 那些年做的学术公益-你不是一个人在战斗
- 四十八、使用Python和Stata完成广西碳酸钙企业的主成分分析和因子分析
- GCC选项_-Wl,-soname
- python treeview底部加个按钮_Python爬取京东商品信息(GUI版本)
- Nancy跨平台开发总结(六)三层架构之Token认证的Rest API
- avd android 5.1,Kotlin开发进阶
- 趣学python编程教孩子学编程_趣学Python——教孩子学编程
- 新零售业背景下实体店的经营战略
- python中extend什么意思_python中extend是什么意思
- python中常用于输出信息的语句函数是print括号_第十四课我们研究一下常用的print()函数,翻看了一下Python宝典...
- CSS的2D旋转效果
- 深信服超融合技术架构(重点介绍主要模块)
- 认识路由器与交换机,在常见的企业组网中起什么样的作用呢?
- MindMaster支持全平台、云储存的思维导图工具
- `英语` 2022/8/25
- 事件监听的理解(ActionListener等)