使用CodeSmith编写ADO.Net三层
说明
自本文发布日起,发现和完善了编写的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三层的更多相关文章
- 完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案
问题描述: CodeSmith是现在比较实用的代码生成器,但是我们发现一个问题: 使用CodeSmith编写MySQL模板的时候,会发现一个问题:MySQL数据表中的列说明获取不到,也就是column ...
- 总结:ADO.NET在开发中的部分使用方法和技巧
如何使用 SqlDataAdapter 来检索多个行 以下代码阐明了如何使用 SqlDataAdapter 对象发出可生成 DataSet 或 DataTable 的命令.它从 SQL Server ...
- 关于ADO.NET的一些知识整理
ADO.NET是什么 虽然我们都知道ADO.NET是对数据库的操作,但是要真的说出ADO.NET的具体含义还不是很容易. ADO.NET是ActiveX Data Objects的缩写,它是一个COM ...
- CodeSmith
完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案 问题描述: CodeSmith是现在比较实用的代码生成器,但是我们发现一个问题: 使用CodeSmith编写 ...
- 转:java c/s tomcat 三层架构
概述在c/s结构的发展历程中,产生了两层c/s结构和三层c/s结构之分.在两层c/s结构中,在信息管理系统的管理上主要分为客户端和数据库服务器. 缺点有两个: 1)开销高昂.在两层c/s结构中,为了维 ...
- 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)
岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...
- NET知识大纲
第一部分 C#编程基础 1.(30)变量.运算符(+.-.*./.++.--.括号.==.!=.>.<.>=.<=.&&.||).流程控制(if.while.f ...
- Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo
目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...
- EF是啥?【What is Entity Framework?】(EF基础系列2)
EF产生的背景: 编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序自动生成相关数据库. Writing and m ...
随机推荐
- pytest测试框架入门
安装pytest 命令行输入: pip install -U pytest 检查是否安装了正确的版本: λ pytest --version This is pytest version 5.3.5, ...
- 安装Linux软件时遇到这个问题,如何解决?
提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E: Could not ...
- 为什么90%的大学都要求计算机专业学习C语言?
编程语言是编程的工具,计算机相关专业的学生必须具备足够的编程能力.当然,关于"最好语言"的争论从来没有休止过,这里要强调一下:语言的选择真的没那么重要,学习语言的过程最重要是语言的 ...
- 一:robot framework环境安装
1.安装robot framework: 打开cmd进入dos下,输入 pip install robotframework Microsoft Windows [版本 10.0.18362.267] ...
- libev使用方法
1. libev简介 libev是个高性能跨平台的事件驱动框架,支持io事件,超时事件,子进程状态改变通知,信号通知,文件状态改变通知,还能用来实现wait/notify机制.libev对每种监听事件 ...
- 【mq读书笔记】定时消息
mq不支持任意的时间京都,如果要支持,不可避免的需要在Broker层做消息排序,加上持久化方面的考量,将不可避免地带来巨大的性能消耗,所以rocketMQ只支持特定级别的延迟消息. 在Broker短通 ...
- 使用RestTemplate,显示请求信息,响应信息
使用RestTemplate,显示请求信息,响应信息 这里不讲怎么用RestTemplate具体细节用法,就是一个学习中的过程记录 一个简单的例子 public class App { public ...
- 基于FPGA的VGA显示实验设计
基于FPGA的VGA显示实验设计 成果展示(优酷视频): 视频: 基于FPGA的VGA显示技术(手机控制) http://v.youku.com/v_show/id_XNjk4ODE3ODUy.htm ...
- sql注入绕过安全狗实战
=绕过 like regexp(匹配)> < (测试安全狗 ><不可以绕过) 注释+换行(%0a作为垃圾数据填充) 联合查询绕过 探测出当union select 出现时会拦截 ...
- 【VSA】One-shot video-based person re-identification with variance subsampling algorithm
目录 解决了什么问题 主要贡献和创新点 基本框架 提出的方法 01 variance confidence方差置信度 02 Variance Subsampling Algorithm 方差二次采样算 ...