Region和Products表的SCHEMA代码,Region表中的主键时赋值方式,Products中的主键是自动增一的

CREATE TABLE [dbo].[Region] (
    [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表的主键是自动增一的。

public class Region:ActiveRecord
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 product = new Product();
product.LoadByKey(1);
this.Text = product.ProductName + "--------" + product.SupplierID.ToString();

SQL  输出

SELECT 
    [ProductID],
    [ProductName],
    [SupplierID],
    [CategoryID],
    [QuantityPerUnit],
    [UnitPrice],
    [UnitsInStock],
    [UnitsOnOrder],
    [ReorderLevel],
    [Discontinued]
FROM
    [Products]    
WHERE
    [ProductID]  = @ProductID

2 数据加载 2

Product product = new Products();
product.ID = 1;
product.Load();
this.Text = product.ProductName + "--------" + product.SupplierID.ToString();

SQL  输出同上

3 返回所有记录

Product product = new Product();
IList products = product.Find();
   foreach(Product p in products)
            {
                Console.WriteLine(p.ProductName);
            }

SQL 输出

SELECT 
    [ProductID],
    [ProductName],
    [SupplierID],
    [CategoryID],
    [QuantityPerUnit],
    [UnitPrice],
    [UnitsInStock],
    [UnitsOnOrder],
    [ReorderLevel],
    [Discontinued]
FROM
    [Products]

4 分页操作,取第3页,每页5条记录

Product product = new Product();
IList products = product.Find(2,5);
foreach(Product p in products)
{
    Console.WriteLine(p.ProductName);
}

SQL  输出

SELECT TOP 5 *  FROM Products WHERE ProductID > (SELECT MAX(ProductID) FROM ( SELECT TOP 10 ProductID FROM Products ORDER BY ProductID ASC) AS TMP) ORDER BY ProductID ASC

4.2 分页操作2,取第3页,每页5条记录

Product product = new Product();
product.Discontinued = false;
IList products = product.Find(2,5);
foreach(Product p in products)
{
                Console.WriteLine(p.ProductName);
}

SQL  输出

SELECT TOP 5 *  FROM ( SELECT * FROM [Products]
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 product = new Product();
product.SupplierID = 7;
product.CategoryID = 3;
IList products = product.Find();
foreach(Product p in products)
{
    Console.WriteLine(p.ProductName);
}

SQL  输出

SELECT 
    [ProductID],
    [ProductName],
    [SupplierID],
    [CategoryID],
    [QuantityPerUnit],
    [UnitPrice],
    [UnitsInStock],
    [UnitsOnOrder],
    [ReorderLevel],
    [Discontinued]
FROM
    [Products]
WHERE
    [SupplierID]=@SupplierID AND
    [CategoryID]=@CategoryID

5.2 多条件查询,通过Condition

Product product = new Product();
Condition con = product.SelectCommand
    .NewCondition("SupplierID") == 7 
       && product.SelectCommand.NewCondition("CategoryID") == 3;
product.SelectCommand.Where(con);
IList products = product.Find();
foreach(Product p in products)
{
                Console.WriteLine(p.ProductName);
}

SQL  输出同上

6  数据插入

Region rg = new Region();
rg.ID = 7;
rg.Description = "77";           
rg.Save();

SQL 输出

INSERT INTO [Region] (
    [RegionID],
    [RegionDescription]
) VALUES (
    @RegionID,
    @RegionDescription
)

6.2 数据插入2

Product product = new Product();
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  输出

INSERT INTO [Products] (
    [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 product = new Product();
product.ProductName ="Test ActiveRecord!";
product.SupplierID = 7;
product.CategoryID = 3;
product.QuantityPerUnit = "test ! test !";
product.Discontinued = true;
product.Save();
Console.WriteLine(product.ProductID);

SQL 输出

INSERT INTO [Products] (
    [ProductName],
    [SupplierID],
    [CategoryID],
    [QuantityPerUnit],
    [Discontinued]
) VALUES (
    @ProductName,
    @SupplierID,
    @CategoryID,
    @QuantityPerUnit,
    @Discontinued
)
select CAST( SCOPE_IDENTITY() AS BIGINT)

7 数据更新

Region rg = new Region();
rg.ID = 7;
   rg.Load();
rg.Description = "7777";           
    rg.Save();

SQL 输出

SELECT 
    [RegionID],
    [RegionDescription]
FROM
    [Region]
WHERE
    [RegionID]=@RegionID

UPDATE [Region] SET 
    [RegionDescription] = @RegionDescription
WHERE
    RegionID = @RegionID

7.2 数据更新,有选择性的只更新“脏”列

Product product = new Product();
product.ID = 93;
product.Load();
product.ProductName ="Test Update ActiveRecord!";
product.QuantityPerUnit = "test Update! test Update!";
product.Discontinued = true;
product.Save();

SQL  输出

SELECT 
    [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 数据删除

Region = new Region();
rg.ID=6;
rg.Delete();

SQL  输出

DELETE FROM [Region]
WHERE
    RegionID = @RegionID

1.5 数据删除2(条件删除(活动记录里面封装了Table数据库表的元数据对象里面),也可以以Filter方式进行删除或Where子句的方式进行删除)

Region rg = new Region();          
   Condition con = rg.DeleteCommand.NewCondition(rg.Table.Key.Columns[0].Name) == 6;
con.Execute();

SQL  输出 同上

上一篇

转载于:https://www.cnblogs.com/netcasewqs/archive/2006/11/01/546544.html

NDO中的ActiveRecord 简介 2——强类型的活动记录相关推荐

  1. 《多媒体在初中数学中的运用研究》课题研究活动记录

    <多媒体在初中数学中的运用研究>课题研究活动记录 石头镇初级中学课题组 李佩佩 小课题研究活动记录(一) 时 间 2020年 4月 1日 主持人 李佩佩 人 员 数学组全体成员 发言人 李 ...

  2. MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动

    MS CRM2011中,在活动方面加强的新特性包括有:批量编辑.自定义活动类型以及定期约会. 本文将主要说明前两项,关于定期约会的内容,将在后续文章中进行介绍. 批量编辑活动记录: 在MS crm20 ...

  3. C#中的Dictionary简介

    C#中的Dictionary简介  http://www.cnblogs.com/ccczqh/archive/2011/01/04/1925852.html 简介 在C#中,Dictionary提供 ...

  4. NCBI中SRA数据库简介

    NCBI中SRA数据库简介 SRA数据库简介 SRA 数据库, 为Sequence Read Archive 的缩写.主要存储高通量测序的数据,来自四个测序平台,分别为: Roche_LS454,Il ...

  5. MyBatisPlus的ActiveRecord(活动记录)简介以及怎样使用

    场景 Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录. ActiveRecord 一直受动态语言(PHP ...

  6. SAP HANA中的SLT简介

    SAP HANA中的SLT简介 目录 SAP系统和SAP HANA之间的SLT连接架构 在SAP源系统中配置SLT服务器 通过SLT将数据从SAP源导入至SAP HANA 非SAP系统和SAP HAN ...

  7. java 8 stream中的Spliterator简介

    文章目录 简介 tryAdvance trySplit estimateSize characteristics 举个例子 总结 java 8 stream中的Spliterator简介 简介 Spl ...

  8. 决策树编程python_Python如何制定决策:编程中的控制流简介

    决策树编程python by Ivan Leo 伊万·利奥(Ivan Leo) Python如何制定决策:编程中的控制流简介 (How Python makes decisions: an intro ...

  9. Linux中用户的简介与管理

    女主宣言 众所周知,linux是一个多用户.多任务的操作系统.那么linux是如何区分和认证用户的,系统对每个用户的授权是如何管理的,出现问题时是如何追朔每个用户在系统内的操作记录,这些就涉及到了li ...

最新文章

  1. 使用Windows Live Writer写博客
  2. 在Eclipse的DDMS中查找genymotion模拟器的sdcard中的文件---开发中遇到的问题(一)
  3. Wow,一个免费、不怕打的评论插件!
  4. 机器学习实战8-sklearn降维(PCA/LLE)
  5. 树莓派apt-get update速度慢的解决方法
  6. 页面打开自动触发onlick事件
  7. MySQL入门02-MySQL二进制版本快速部署
  8. WEB前端-CSS精灵技术
  9. 银河麒麟系统怎么安装微软雅黑字体
  10. label怎么换行 vb_VB.NET LABEL 如何实现自动换行
  11. 联想服务器r525维修,扩展性强易管理 联想R525 G2服务器拆解
  12. Windows安装证书
  13. Java教师工资习题
  14. rabbitmq遇到的一些坑
  15. html5页面和app的区别,H5页面与APP区别何在
  16. TypeScript - 一种思维方式
  17. PyCharm谷歌翻译插件Translation提示:更新 TKK 失败,请检查网络连接
  18. 20-Django REST framework-Serializer序列化器
  19. 将Sleuth添加到项目里做链路追踪的三种方式(Greenwich.SR5版)
  20. Python爬虫入门10:select方法快速定位HTML内容

热门文章

  1. python画长方形-怎么用python 画出任意占空比的一串矩形方波呢?
  2. python语言入门编程猫-编程猫推出海龟编程器,打造Python教育产品矩阵
  3. c和python哪个好学-C/C++和Python哪个更有前景?
  4. python软件开发的一般流程-Python各个岗位的开发流程
  5. python编程入门与案例详解pdf-Flutter技术入门与实战 PDF 清晰版
  6. python代码块使用缩进表示-Python 为什么使用缩进来划分代码块?
  7. python turtle画彩虹-Python turtle 绘制彩色螺旋线
  8. python画出心形图-python画出心形图
  9. 简单比较python语言和c语言的异同-Python快速入门之与C语言异同
  10. python免费视频百度网盘-Python入门视频百度网盘看这些就够