说明

自本文发布日起,发现和完善了编写的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. python+selenium下载和上传文件

    操作浏览器上传文件,先看代码 1 """ 2 * send_keys() 指定文件上传路径. 3 """ 4 from selenium i ...

  2. C语言讲义——链表的实现

    节点(结构体描述) struct Node { int _id; char s[50]; struct Node* pre;// 指向前一个节点的地址 struct Node* next;// 指向下 ...

  3. C# WinForm UDP 发送和接收消息

    using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; ...

  4. PADS经验总结

    PADS经验总结 1. 快捷键z+数字,能够快速查看相应层:直接z,会显示所有层: 2. 快捷键l+数字,在走线时能够快速切换层: 3. setup->design Rules能设置线宽,DRC ...

  5. Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件

    首先说一下,这里解决的问题应用场景: sparksql处理Hive表数据时,判断加载的是否是分区表,以及分区表的字段有哪些?再进一步限制查询分区表必须指定分区? 这里涉及到两种情况:select SQ ...

  6. 给你一个亿的keys,Redis如何统计?

    前言 不知你大规模的用过Redis吗?还是仅仅作为缓存的工具了?在Redis中使用最多的就是集合了,举个例子,如下场景: 签到系统中,一天对应一系列的用户签到记录. 电商系统中,一个商品对应一系列的评 ...

  7. Cys_Control(一) 项目搭建

    一.基础工程搭建 Cys_Controls Cys_Resource(注:一般类库默认不能引入资源文件,故直接创建Custom Control Library) Cys_Demo 删除默认文件夹及类, ...

  8. 用java以正确的姿势刷CSP

    许多程序算法考试中,用java是个不错的选择,它几乎实现了所有c++能实现的,所以越来越受Acmer的欢迎.总结一下用到的一些技巧和方法.更多关于csp的可参考海岛blog|皮卡丘 1. 输出 规格化 ...

  9. PyQt专题结题感言

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 今天写完PyQt专题显示部件的最后一篇文章,长长的 ...

  10. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件移除选项卡的removeTab和clear方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 要从一个QTabWidget中去除选项卡,可用使用removeTab和clear方法. 1.移除选项 ...