说明

自本文发布日起,发现和完善了编写的CodeSmith几处代码。

故,不再直接在文章添加代码,最新代码参见GitHub

https://github.com/catbiscuit/CodeSmithAdoNET

测试数据表

--1、Books表

CREATE TABLE [dbo].[Books](
[ID] [varchar](50) NOT NULL,
[OrgNo] [varchar](10) NOT NULL,
[Name] [varchar](50) NULL,
[Num] [int] NULL,
[InDate] [datetime] NULL,
CONSTRAINT [PK_Books] PRIMARY KEY CLUSTERED
(
[ID] ASC,
[OrgNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO --2、Books数据 Insert Into [Books] ([ID],[OrgNo],[Name],[Num],[InDate]) Values('1','8002','Mary','4','2017-12-04 09:29:05')
Insert Into [Books] ([ID],[OrgNo],[Name],[Num],[InDate]) Values('2','8001','Jim','5','2017-12-03 10:12:11')
Insert Into [Books] ([ID],[OrgNo],[Name],[Num],[InDate]) Values('2','8002','Mike','6','2017-12-05 00:00:00')
Insert Into [Books] ([ID],[OrgNo],[Name],[Num],[InDate]) Values('2','8003','Jum','7','2017-12-05 00:00:00')
Insert Into [Books] ([ID],[OrgNo],[Name],[Num],[InDate]) Values('2','8004','Yury','8','2017-12-09 00:00:00')
Insert Into [Books] ([ID],[OrgNo],[Name],[Num],[InDate]) Values('2','8005','Iori','9','2017-12-12 00:00:00') GO --3、Organization表 CREATE TABLE [dbo].[Organization](
[OrgNo] [varchar](5) NOT NULL,
[LName] [nvarchar](100) NOT NULL
CONSTRAINT [PK_Organization] PRIMARY KEY CLUSTERED
(
[OrgNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO --4、Organization数据 Insert Into [Organizations] ([OrgNo],[LName]) Values('8001','组织1')
Insert Into [Organizations] ([OrgNo],[LName]) Values('8002','组织2')
Insert Into [Organizations] ([OrgNo],[LName]) Values('8003','组织3')
Insert Into [Organizations] ([OrgNo],[LName]) Values('8004','组织4')
Insert Into [Organizations] ([OrgNo],[LName]) Values('8005','组织5') GO --5、Books视图 CREATE View v_Books
as
select a.*
,b.LName
FROM Books a
left JOIN Organization b ON a.OrgNo=b.OrgNo GO

测试程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data; namespace Test
{
class Program
{
static void Main(string[] args)
{
GXEIS.BLL.Books BooksBLL = new GXEIS.BLL.Books();
try
{
/*是否存在记录*/
//bool bIsExists = BooksBLL.Exists("1", "8001");
//Console.WriteLine(bIsExists); /*增加一条记录*/
//GXEIS.Model.Books BooksModel = new GXEIS.Model.Books()
//{
// ID = "1",
// OrgNo = "8002",
// Name = "Mary",
// Num = 4,
// InDate = DateTime.Now
//};
//bool bIsExists = BooksBLL.Add(BooksModel);
//Console.WriteLine(bIsExists); /*删除记录*/
//bool bIsExists = BooksBLL.Delete("1", "8001");
//Console.WriteLine(bIsExists); /*更新一条记录*/
//GXEIS.Model.Books BooksModel = new GXEIS.Model.Books()
//{
// ID = "2",
// OrgNo = "8001",
// Name = "Jim",
// Num = 5,
// InDate = DateTime.Now.AddDays(-1)
//};
//bool bIsExists = BooksBLL.Update(BooksModel);
//Console.WriteLine(bIsExists); /*得到一个对象实体*/
//GXEIS.Model.Books BooksModel = BooksBLL.GetModel("2", "8001");
//Console.WriteLine(BooksModel.Name); /*得到一个DataSet*/
//DataTable dtResult = BooksBLL.GetList("").Tables[0];
//Console.WriteLine(dtResult.Rows.Count.ToString()); /*获取分页数据,不含时间字段*/
//int iCount = 0;
//GXEIS.Model.Books BooksModel = new GXEIS.Model.Books()
//{
// ID = "2"
//};
//DataTable dtResult = BooksBLL.GetPageList(BooksModel, "ID", 3, 2, out iCount);
//Console.WriteLine(dtResult.Rows.Count.ToString()); /*获取分页数据,包含时间字段*/
//int iCount = 0;
//GXEIS.Model.Books BooksModel = new GXEIS.Model.Books()
//{
// ID = "2"
//};
//string sSDate = "2017-12-03";
//string sEDate = "2017-12-05";
//DataTable dtResult = BooksBLL.GetPageList(BooksModel, sSDate, sEDate, "ID", 3, 1, out iCount);
//Console.WriteLine(dtResult.Rows.Count.ToString()); /*获取分页视图数据,不含时间字段*/
//int iCount = 0;
//GXEIS.Model.Books BooksModel = new GXEIS.Model.Books()
//{
// ID = "2"
//};
//DataTable dtResult = BooksBLL.GetPageListByView(BooksModel, "ID", 3, 2, out iCount);
//Console.WriteLine(dtResult.Rows.Count.ToString()); /*获取分页视图数据,包含时间字段*/
//int iCount = 0;
//GXEIS.Model.Books BooksModel = new GXEIS.Model.Books()
//{
// ID = "2"
//};
//string sSDate = "2017-12-03";
//string sEDate = "2017-12-05";
//DataTable dtResult = BooksBLL.GetPageListByView(BooksModel, sSDate, sEDate, "ID", 3, 1, out iCount);
//Console.WriteLine(dtResult.Rows.Count.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
} Console.ReadKey();
}
}
}

使用CodeSmith编写ADO.Net三层的更多相关文章

  1. 完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案

    问题描述: CodeSmith是现在比较实用的代码生成器,但是我们发现一个问题: 使用CodeSmith编写MySQL模板的时候,会发现一个问题:MySQL数据表中的列说明获取不到,也就是column ...

  2. 总结:ADO.NET在开发中的部分使用方法和技巧

    如何使用 SqlDataAdapter 来检索多个行 以下代码阐明了如何使用 SqlDataAdapter 对象发出可生成 DataSet 或 DataTable 的命令.它从 SQL Server ...

  3. 关于ADO.NET的一些知识整理

    ADO.NET是什么 虽然我们都知道ADO.NET是对数据库的操作,但是要真的说出ADO.NET的具体含义还不是很容易. ADO.NET是ActiveX Data Objects的缩写,它是一个COM ...

  4. CodeSmith

    完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案   问题描述: CodeSmith是现在比较实用的代码生成器,但是我们发现一个问题: 使用CodeSmith编写 ...

  5. 转:java c/s tomcat 三层架构

    概述在c/s结构的发展历程中,产生了两层c/s结构和三层c/s结构之分.在两层c/s结构中,在信息管理系统的管理上主要分为客户端和数据库服务器. 缺点有两个: 1)开销高昂.在两层c/s结构中,为了维 ...

  6. 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)

    岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...

  7. NET知识大纲

    第一部分 C#编程基础 1.(30)变量.运算符(+.-.*./.++.--.括号.==.!=.>.<.>=.<=.&&.||).流程控制(if.while.f ...

  8. Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo

    目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...

  9. EF是啥?【What is Entity Framework?】(EF基础系列2)

    EF产生的背景: 编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序自动生成相关数据库. Writing and m ...

随机推荐

  1. Java基础教程——BigDecimal类

    BigDecimal类 float.double类型的数字在计算的时候,容易发生精度丢失. 使用java.math.BigDecimal类可以解决此类问题. 前面讲过Math类,现在的BigDecim ...

  2. 企业安全06-Fastjson-CNVD-2017-02833

    Fastjson-CNVD-2017-02833 一.漏洞概述 fastjson在解析json的过程中,支持使用@type字段来指定反序列化的类型,并调用该类的set/get方法来访问属性,当组件开启 ...

  3. 【mq读书笔记】mq事务消息

    关于mq食物以什么样的方式解决了什么样的问题可以参考这里: https://www.jianshu.com/p/cc5c10221aa1 上文中示例基于mq版本较低较新的版本中TransactionL ...

  4. ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161

    仅针对如下错误内容: Cannot send, channel has already failed: tcp://127.0.0.1:8161 一种尝试解决,修改连接端口为 61616: tcp:/ ...

  5. 第四十章、PyQt显示部件:QGraphicsView图形视图和QGraphicsScene图形场景简介及应用案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Graphics V ...

  6. PyQt(Python+Qt)学习随笔:QScrollArea的alignment属性不起作用的原因

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Scroll Area滚动区域提供了一个呈现在其他部件上的可滚动区域视图,对应类为QScrollAr ...

  7. 第十章、Qt Designer中的Spacers部件

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一. 引言 在Designer的部件栏中,有两种类型的Spacers部件,下图中上面布局中为一个水平 ...

  8. PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系&g ...

  9. XSS挑战赛(4)

    16-20关 第十六关 关键代码为: <?php ini_set("display_errors", 0); $str = strtolower($_GET["ke ...

  10. 【Kubernetes学习笔记】-kubeadm 手动搭建kubernetes 集群

    目录 K8S 组件构成 环境准备 (以ubuntu系统为例) 1. kubernetes集群机器 2. 安装 docker. kubeadm.kubelet.kubectl 2.1 在每台机器上安装 ...