使用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 ...
随机推荐
- HDU 4920 Matrix multiplication 题解(内存访问连续性/卡常)
题目链接 题目大意 多组输入,给你两个n×n的矩阵,要你求他们相乘%3的值 题目思路 这个题目主要是要了解内存访问连续化,要尽量每次访问连续的内存 所以第一种方法会超时,第二种则AC.一种卡常技巧 代 ...
- python sklearn库实现逻辑回归的实例代码
Sklearn简介 Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression).降维(Dimensionality Red ...
- 这几个很实用的Linux命令,千万别忘记了!
- C/C++面试题:C++与C有什么不同?
昨天,小编在一个讨论群里看到这样的对话 有人想要入学校编程俱乐部,面试时,学长问了她C++的区别,她没有答上来,就没有通过. 说到C和C++的区别,不只是进入学校社团有考核,出了学校,找工作面 ...
- Pytest系列(十三)- 重复执行之pytest-repeat的使用
写在前面 这个插件,可以帮助我们很好的解决自动化测试过程中的一些偶线性bug难以复现的问题,但前提是,当前自动化脚本是独立的,不依赖任何其他脚本.个人觉得还是失败重运行的一种体现,就和TestNG是一 ...
- redis cluster下的pipeline
因为key在cluster分布在不同的slot,可能在不同的机器,部分redis的客户端(比如jedis)是不支持pipeline的 针对jedis我们可能要先把这些key对应的slot手机起来,得到 ...
- canal部署
转载: https://blog.csdn.net/qq_30043755/article/details/83539116 最后的binlog最后被封装为这样的一个对象: com.alibaba.o ...
- xios封装
封装的意义 1.提高代码可读性2.提高代码可维护性3.减少代码书写 封装 import axios from 'axios' axios.defaults.baseURL = 'http://127. ...
- Kubernetes日志系统新贵Loki-Stack
Loki简介 Grafana Loki是可以组成功能齐全的日志记录堆栈的一组组件. 与其他日志记录系统不同,Loki是基于仅索引有关日志的元数据的想法而构建的:标签(就像Prometheus标签一样) ...
- C++调用C接口
目录 C++调用C代码 解决调用失败问题 思考:那C代码能够被C程序调用吗 C代码既能被C++调用又能被C调用 C++调用C代码 一个C语言文件p.c #include <stdio.h> ...