说明

自本文发布日起,发现和完善了编写的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. P5665 划分

    Part 1 先来看一个错误的贪心做法:假设当前结尾的一段和为 \(a\),等待加入结尾的一段和为 \(b\),现在要处理新进来的数 \(c\). \(a\leq b\),将 \(a\) 算入答案,将 ...

  2. Spring Boot + Redis 初体验

    本文测试环境: Spring Boot 2.1.4.RELEASE + Redis 5.0.4 + CentOS 7 让程序先 run 起来 安装及配置 Redis 参考: How To Instal ...

  3. DRF的限流配置

    在settings.py中添加配置 REST_FRAMEWORK = { #3.限流(防爬虫) 'DEFAULT_THROTTLE_CLASSES': [ 'rest_framework.thrott ...

  4. moviepy音视频剪辑:追踪人脸打马赛克的三种实现方式

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在moviepy官网的案例<Tracking and blurring someone's face>和CSDN的moviepy大神uc ...

  5. 关于Python链式赋值的赋值顺序问题

    在<第4.7节 Python特色的序列解包.链式赋值.链式比较>一文中,老猿这样介绍的: 链式赋值是用一行语句将多个变量赋值为同一个值,语法如下: 变量1=变量2=变量n=赋值表达式 该语 ...

  6. PyQt(Python+Qt)学习随笔:QScrollArea滚动区域的scrollAreaWidgetContents、widget及setWidget等相关概念解释

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在Designer中设计将一个lable放到滚动区域上,使用PyUIC生成代码后,可以看到除了QSc ...

  7. 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解

    一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...

  8. Hadoop 中HDFS、MapReduce体系结构

    在网络环境方面,作为分布式系统,Hadoop基于TCP/IP进行节点间的通信和传输. 在数据传输方面,广泛应用HTTP实现. 在监控.通知方面,Hadoop等分布式大数据软件则广泛使用异步消息队列等机 ...

  9. 测试与发布( Alpha版本 )

    THE BUG 团队 杨梓琦 温海源 李华 陈杰才 郑堡恩 钟明康 软件说明 本软件用MYSQL数据库保存所有的数据内容,因此可以通过查询数据库查询功能是否正常进行. 测试过程 在测试过程中,左右两张 ...

  10. 认识css常见的hack

    一.认识css hack CSS Hack只要是来解决浏览器局部的兼容性问题,主要是因为每个浏览器对css的解析各不相同,导致输出到页面的效果的差异: 二.css hack的三种常见形式:css属性h ...