NDO中的ActiveRecord 简介 2——强类型的活动记录
Region和Products表的SCHEMA代码,Region表中的主键时赋值方式,Products中的主键是自动增一的
[RegionID] [int] PRIMARY KEY,
[RegionDescription] [nchar] (50) NOT NULL
)
CREATE TABLE [dbo].[Products] (
[ProductID] [int] IDENTITY (1, 1) PRIMARY KEY,
[ProductName] [nvarchar] (40) NULL ,
[SupplierID] [int] NULL ,
[CategoryID] [int] NULL ,
[QuantityPerUnit] [nvarchar] (20) NULL ,
[UnitPrice] [money] NULL ,
[UnitsInStock] [smallint] NULL ,
[UnitsOnOrder] [smallint] NULL ,
[ReorderLevel] [smallint] NULL ,
[Discontinued] [bit] NOT NULL
)
强类型活动记录类Region和Product代码:Region的ID属性包含get和set,而Product的ProductID属性只需要get即可,因为Product类映射的Products表的主键是自动增一的。
1_34_257_Closed_Text.style.display='none'; Codehighlighter1_34_257_Open_Image.style.display='inline'; Codehighlighter1_34_257_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top> {
public new int ID
{
get { return (int)base.ID;}
set { base.ID = value;}
}
public string Description
{
get{ return (string)this["RegionDescription"];}
set { this["RegionDescription"] = value;}
}
}
public class Product:ActiveRecord
{
public Product():base("Products"){}
public int ProductID
{
get
{
return (int)this.ID;
}
}
public string ProductName
{
get
{
return this["ProductName"].ToString();
}
set
{
this["ProductName"] = value;
}
}
public int SupplierID
{
get
{
return (int)this.GetValue("SupplierID");
}
set
{
this.SetValue("SupplierID", value);
}
}
public int CategoryID
{
get
{
return (int)this.GetValue("CategoryID");
}
set
{
this.SetValue("CategoryID", value);
}
}
public string QuantityPerUnit
{
get
{
return this.GetValue("QuantityPerUnit").ToString();
}
set
{
this.SetValue("QuantityPerUnit", value);
}
}
public decimal UnitPrice
{
get
{
return (decimal)this.GetValue("UnitPrice");
}
set
{
this.SetValue("UnitPrice", value);
}
}
public short UnitsInStock
{
get
{
return (short)this.GetValue("UnitsInStock");
}
set
{
this.SetValue("UnitsInStock", value);
}
}
public short UnitsOnOrder
{
get
{
return (short)this.GetValue("UnitsOnOrder");
}
set
{
this.SetValue("UnitsOnOrder", value);
}
}
public short ReorderLevel
{
get
{
return (short)this.GetValue("ReorderLevel");
}
set
{
this.SetValue("ReorderLevel", value);
}
}
public bool Discontinued
{
get
{
return Convert.ToBoolean(this.GetValue("Discontinued"));
}
set
{
this.SetValue("Discontinued", value);
}
}
应用例子:
1 数据加载Load ,或LoadByKey返回数据库中的一条记录,如果有多条只加载第一条记录
product.LoadByKey(1);
this.Text = product.ProductName + "--------" + product.SupplierID.ToString();
SQL 输出
[ProductID],
[ProductName],
[SupplierID],
[CategoryID],
[QuantityPerUnit],
[UnitPrice],
[UnitsInStock],
[UnitsOnOrder],
[ReorderLevel],
[Discontinued]
FROM
[Products]
WHERE
[ProductID] = @ProductID
2 数据加载 2
product.ID = 1;
product.Load();
this.Text = product.ProductName + "--------" + product.SupplierID.ToString();
SQL 输出同上
3 返回所有记录
IList products = product.Find();
foreach(Product p in products)
{
Console.WriteLine(p.ProductName);
}
SQL 输出
[ProductID],
[ProductName],
[SupplierID],
[CategoryID],
[QuantityPerUnit],
[UnitPrice],
[UnitsInStock],
[UnitsOnOrder],
[ReorderLevel],
[Discontinued]
FROM
[Products]
4 分页操作,取第3页,每页5条记录
IList products = product.Find(2,5);
foreach(Product p in products)
{
Console.WriteLine(p.ProductName);
}
SQL 输出
4.2 分页操作2,取第3页,每页5条记录
product.Discontinued = false;
IList products = product.Find(2,5);
foreach(Product p in products)
{
Console.WriteLine(p.ProductName);
}
SQL 输出
WHERE
[Discontinued]=@Discontinued ) AS TMP WHERE TMP.ProductID > (SELECT MAX(TMP3.ProductID) FROM ( SELECT TOP 10 TMP2.ProductID FROM ( SELECT * FROM
[Products]
WHERE
[Discontinued]=@Discontinued ) AS TMP2 ORDER BY TMP2.ProductID ASC) AS TMP3) ORDER BY TMP.ProductID ASC
5 多条件查询
product.SupplierID = 7;
product.CategoryID = 3;
IList products = product.Find();
foreach(Product p in products)
{
Console.WriteLine(p.ProductName);
}
SQL 输出
[ProductID],
[ProductName],
[SupplierID],
[CategoryID],
[QuantityPerUnit],
[UnitPrice],
[UnitsInStock],
[UnitsOnOrder],
[ReorderLevel],
[Discontinued]
FROM
[Products]
WHERE
[SupplierID]=@SupplierID AND
[CategoryID]=@CategoryID
5.2 多条件查询,通过Condition
Condition con = product.SelectCommand
.NewCondition("SupplierID") == 7
product.SelectCommand.Where(con);
IList products = product.Find();
foreach(Product p in products)
{
Console.WriteLine(p.ProductName);
}
SQL 输出同上
6 数据插入
rg.ID = 7;
rg.Description = "77";
rg.Save();
SQL 输出
[RegionID],
[RegionDescription]
) VALUES (
@RegionID,
@RegionDescription
)
6.2 数据插入2
product.ProductName ="Test ActiveRecord!";
product.SupplierID = 7;
product.CategoryID = 3;
product.QuantityPerUnit = "test ! test !";
product.UnitPrice = 0.5m;
product.UnitsInStock = 5;
product.UnitsOnOrder = 3;
product.ReorderLevel = 10;
product.Discontinued = true;
product.Save();
Console.WriteLine(product.ProductID);
SQL 输出
[ProductName],
[SupplierID],
[CategoryID],
[QuantityPerUnit],
[UnitPrice],
[UnitsInStock],
[UnitsOnOrder],
[ReorderLevel],
[Discontinued]
) VALUES (
@ProductName,
@SupplierID,
@CategoryID,
@QuantityPerUnit,
@UnitPrice,
@UnitsInStock,
@UnitsOnOrder,
@ReorderLevel,
@Discontinued
);
select CAST( SCOPE_IDENTITY() AS BIGINT)
6.3 数据插入3,部分字段的插入
product.ProductName ="Test ActiveRecord!";
product.SupplierID = 7;
product.CategoryID = 3;
product.QuantityPerUnit = "test ! test !";
product.Discontinued = true;
product.Save();
Console.WriteLine(product.ProductID);
SQL 输出
[ProductName],
[SupplierID],
[CategoryID],
[QuantityPerUnit],
[Discontinued]
) VALUES (
@ProductName,
@SupplierID,
@CategoryID,
@QuantityPerUnit,
@Discontinued
)
7 数据更新
rg.ID = 7;
rg.Description = "7777";
SQL 输出
[RegionID],
[RegionDescription]
FROM
[Region]
WHERE
[RegionID]=@RegionID
UPDATE [Region] SET
[RegionDescription] = @RegionDescription
WHERE
RegionID = @RegionID
7.2 数据更新,有选择性的只更新“脏”列
product.ID = 93;
product.Load();
product.ProductName ="Test Update ActiveRecord!";
product.QuantityPerUnit = "test Update! test Update!";
product.Discontinued = true;
product.Save();
SQL 输出
[ProductID],
[ProductName],
[SupplierID],
[CategoryID],
[QuantityPerUnit],
[UnitPrice],
[UnitsInStock],
[UnitsOnOrder],
[ReorderLevel],
[Discontinued]
FROM
[Products]
WHERE
[ProductID]=@ProductID
UPDATE [Products] SET
[ProductName] = @ProductName,
[QuantityPerUnit] = @QuantityPerUnit,
[Discontinued] = @Discontinued
WHERE
ProductID = @ProductID
7.3 数据删除
rg.ID=6;
rg.Delete();
SQL 输出
WHERE
RegionID = @RegionID
1.5 数据删除2(条件删除(活动记录里面封装了Table数据库表的元数据对象里面),也可以以Filter方式进行删除或Where子句的方式进行删除)
con.Execute();
SQL 输出 同上
上一篇
转载于:https://www.cnblogs.com/netcasewqs/archive/2006/11/01/546544.html
NDO中的ActiveRecord 简介 2——强类型的活动记录相关推荐
- 《多媒体在初中数学中的运用研究》课题研究活动记录
<多媒体在初中数学中的运用研究>课题研究活动记录 石头镇初级中学课题组 李佩佩 小课题研究活动记录(一) 时 间 2020年 4月 1日 主持人 李佩佩 人 员 数学组全体成员 发言人 李 ...
- MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动
MS CRM2011中,在活动方面加强的新特性包括有:批量编辑.自定义活动类型以及定期约会. 本文将主要说明前两项,关于定期约会的内容,将在后续文章中进行介绍. 批量编辑活动记录: 在MS crm20 ...
- C#中的Dictionary简介
C#中的Dictionary简介 http://www.cnblogs.com/ccczqh/archive/2011/01/04/1925852.html 简介 在C#中,Dictionary提供 ...
- NCBI中SRA数据库简介
NCBI中SRA数据库简介 SRA数据库简介 SRA 数据库, 为Sequence Read Archive 的缩写.主要存储高通量测序的数据,来自四个测序平台,分别为: Roche_LS454,Il ...
- MyBatisPlus的ActiveRecord(活动记录)简介以及怎样使用
场景 Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录. ActiveRecord 一直受动态语言(PHP ...
- SAP HANA中的SLT简介
SAP HANA中的SLT简介 目录 SAP系统和SAP HANA之间的SLT连接架构 在SAP源系统中配置SLT服务器 通过SLT将数据从SAP源导入至SAP HANA 非SAP系统和SAP HAN ...
- java 8 stream中的Spliterator简介
文章目录 简介 tryAdvance trySplit estimateSize characteristics 举个例子 总结 java 8 stream中的Spliterator简介 简介 Spl ...
- 决策树编程python_Python如何制定决策:编程中的控制流简介
决策树编程python by Ivan Leo 伊万·利奥(Ivan Leo) Python如何制定决策:编程中的控制流简介 (How Python makes decisions: an intro ...
- Linux中用户的简介与管理
女主宣言 众所周知,linux是一个多用户.多任务的操作系统.那么linux是如何区分和认证用户的,系统对每个用户的授权是如何管理的,出现问题时是如何追朔每个用户在系统内的操作记录,这些就涉及到了li ...
最新文章
- 使用Windows Live Writer写博客
- 在Eclipse的DDMS中查找genymotion模拟器的sdcard中的文件---开发中遇到的问题(一)
- Wow,一个免费、不怕打的评论插件!
- 机器学习实战8-sklearn降维(PCA/LLE)
- 树莓派apt-get update速度慢的解决方法
- 页面打开自动触发onlick事件
- MySQL入门02-MySQL二进制版本快速部署
- WEB前端-CSS精灵技术
- 银河麒麟系统怎么安装微软雅黑字体
- label怎么换行 vb_VB.NET LABEL 如何实现自动换行
- 联想服务器r525维修,扩展性强易管理 联想R525 G2服务器拆解
- Windows安装证书
- Java教师工资习题
- rabbitmq遇到的一些坑
- html5页面和app的区别,H5页面与APP区别何在
- TypeScript - 一种思维方式
- PyCharm谷歌翻译插件Translation提示:更新 TKK 失败,请检查网络连接
- 20-Django REST framework-Serializer序列化器
- 将Sleuth添加到项目里做链路追踪的三种方式(Greenwich.SR5版)
- Python爬虫入门10:select方法快速定位HTML内容
热门文章
- python画长方形-怎么用python 画出任意占空比的一串矩形方波呢?
- python语言入门编程猫-编程猫推出海龟编程器,打造Python教育产品矩阵
- c和python哪个好学-C/C++和Python哪个更有前景?
- python软件开发的一般流程-Python各个岗位的开发流程
- python编程入门与案例详解pdf-Flutter技术入门与实战 PDF 清晰版
- python代码块使用缩进表示-Python 为什么使用缩进来划分代码块?
- python turtle画彩虹-Python turtle 绘制彩色螺旋线
- python画出心形图-python画出心形图
- 简单比较python语言和c语言的异同-Python快速入门之与C语言异同
- python免费视频百度网盘-Python入门视频百度网盘看这些就够