DepTable表 主要作用 存放单位名称
如图:
模板下载地址 CodeSmith版本为v6.5
第一步:用CodeSmith模板生成DepTable表相关的存储过程
生成的存储过程如下:
/****** Object: Stored Procedure [dbo].DepTable_Delete Script Date: 2015年2月8日 ******/ if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[DepTable_Delete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[DepTable_Delete] GO /****** Object: Stored Procedure [dbo].DepTable_SelectOne Script Date: 2015年2月8日 ******/ if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[DepTable_SelectOne]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[DepTable_SelectOne] GO /****** Object: Stored Procedure [dbo].DepTable_GetCount Script Date: 2015年2月8日 ******/ if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[DepTable_GetCount]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[DepTable_GetCount] GO /****** Object: Stored Procedure [dbo].DepTable_SelectAll Script Date: 2015年2月8日 ******/ if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[DepTable_SelectAll]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[DepTable_SelectAll] GO /****** Object: Stored Procedure [dbo].DepTable_Insert Script Date: 2015年2月8日 ******/ if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[DepTable_Insert]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[DepTable_Insert] GO /****** Object: Stored Procedure [dbo].DepTable_Update Script Date: 2015年2月8日 ******/ if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[DepTable_Update]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[DepTable_Update] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].DepTable_Delete /* Author: msdc Created: 2015-2-8 Last Modified: 2015-2-8 */ @Id int AS DELETE FROM [dbo].[DepTable] WHERE [Id] = @Id GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].DepTable_GetCount /* Author: msdc Created: 2015-2-8 Last Modified: 2015-2-8 */ AS SELECT COUNT(*) FROM [dbo].[DepTable] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE [dbo].DepTable_SelectOne /* Author: msdc Created: 2015-2-8 Last Modified: 2015-2-8 */ @Id int AS SELECT [Id], [Department] FROM [dbo].[DepTable] WHERE [Id] = @Id GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].DepTable_SelectAll /* Author: msdc Created: 2015-2-8 Last Modified: 2015-2-8 */ AS SELECT [Id], [Department] FROM [dbo].[DepTable] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].DepTable_Insert /* Author: msdc Created: 2015-2-8 Last Modified: 2015-2-8 */ @Department nvarchar(200) AS INSERT INTO [dbo].[DepTable] ( [Department] ) VALUES ( @Department ) SELECT @@IDENTITY GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].DepTable_Update /* Author: msdc Created: 2015-2-8 Last Modified: 2015-2-8 */ @Id int, @Department nvarchar(200) AS UPDATE [dbo].[DepTable] SET [Department] = @Department WHERE [Id] = @Id GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO /****** Object: Stored Procedure [dbo].DepTable_SelectPage Script Date: 2015年2月8日 ******/ if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[DepTable_SelectPage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[DepTable_SelectPage] GO CREATE PROCEDURE [dbo].DepTable_SelectPage -- Author: msdc -- Created: 2015-2-8 -- Last Modified: 2015-2-8 @PageNumber int, @PageSize int AS DECLARE @PageLowerBound int DECLARE @PageUpperBound int SET @PageLowerBound = (@PageSize * @PageNumber) - @PageSize SET @PageUpperBound = @PageLowerBound + @PageSize + 1 /* Note: temp tables use the server default for collation not the database default so if adding character columns be sure and specify to use the database collation like this to avoid collation errors: CREATE TABLE #PageIndexForUsers ( IndexID int IDENTITY (1, 1) NOT NULL, UserName nvarchar(50) COLLATE DATABASE_DEFAULT, LoginName nvarchar(50) COLLATE DATABASE_DEFAULT ) */ CREATE TABLE #PageIndex ( IndexID int IDENTITY (1, 1) NOT NULL, Id Int ) BEGIN INSERT INTO #PageIndex ( Id ) SELECT [Id] FROM [dbo].[DepTable] -- WHERE -- ORDER BY END SELECT t1.* FROM [dbo].[DepTable] t1 JOIN #PageIndex t2 ON t1.[Id] = t2.[Id] WHERE t2.IndexID > @PageLowerBound AND t2.IndexID < @PageUpperBound ORDER BY t2.IndexID DROP TABLE #PageIndex GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO
DepTable_Insert 插入数据
DepTable_Update 更新数据
DepTable_SelectPage 获取分页数据
DepTable_SelectAll 获取所有数据
DepTable_SelectOne 获取某个数据
DepTable_GetCount 获取数量
DepTable_Delete 删除某个数据
第二步:用codesmith模板生成数据层代码:
// Author: msdc // Created: 2015-2-8 // Last Modified: 2015-2-8 using System; using System.IO; using System.Text; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Configuration; using mojoPortal.Data; namespace mojoPortal.Data { public static class DBDepTable { /// <summary> /// Gets the connection string for read. /// </summary> /// <returns></returns> private static string GetReadConnectionString() { return ConfigurationManager.AppSettings["MSSQLConnectionString"]; } /// <summary> /// Gets the connection string for write. /// </summary> /// <returns></returns> private static string GetWriteConnectionString() { if (ConfigurationManager.AppSettings["MSSQLWriteConnectionString"] != null) { return ConfigurationManager.AppSettings["MSSQLWriteConnectionString"]; } return ConfigurationManager.AppSettings["MSSQLConnectionString"]; } /// <summary> /// Inserts a row in the DepTable table. Returns new integer id. /// </summary> /// <param name="department"> department </param> /// <returns>int</returns> public static int Create( string department) { SqlParameterHelper sph = new SqlParameterHelper(GetWriteConnectionString(), "DepTable_Insert", 1); sph.DefineSqlParameter("@Department", SqlDbType.NVarChar, 200, ParameterDirection.Input, department); int newID = Convert.ToInt32(sph.ExecuteScalar()); return newID; } /// <summary> /// Updates a row in the DepTable table. Returns true if row updated. /// </summary> /// <param name="id"> id </param> /// <param name="department"> department </param> /// <returns>bool</returns> public static bool Update( int id, string department) { SqlParameterHelper sph = new SqlParameterHelper(GetWriteConnectionString(), "DepTable_Update", 2); sph.DefineSqlParameter("@Id", SqlDbType.Int, ParameterDirection.Input, id); sph.DefineSqlParameter("@Department", SqlDbType.NVarChar, 200, ParameterDirection.Input, department); int rowsAffected = sph.ExecuteNonQuery(); return (rowsAffected > 0); } /// <summary> /// Deletes a row from the DepTable table. Returns true if row deleted. /// </summary> /// <param name="id"> id </param> /// <returns>bool</returns> public static bool Delete( int id) { SqlParameterHelper sph = new SqlParameterHelper(GetWriteConnectionString(), "DepTable_Delete", 1); sph.DefineSqlParameter("@Id", SqlDbType.Int, ParameterDirection.Input, id); int rowsAffected = sph.ExecuteNonQuery(); return (rowsAffected > 0); } /// <summary> /// Gets an IDataReader with one row from the DepTable table. /// </summary> /// <param name="id"> id </param> public static IDataReader GetOne( int id) { SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "DepTable_SelectOne", 1); sph.DefineSqlParameter("@Id", SqlDbType.Int, ParameterDirection.Input, id); return sph.ExecuteReader(); } /// <summary> /// Gets a count of rows in the DepTable table. /// </summary> public static int GetCount() { return Convert.ToInt32(SqlHelper.ExecuteScalar( GetReadConnectionString(), CommandType.StoredProcedure, "DepTable_GetCount", null)); } /// <summary> /// Gets an IDataReader with all rows in the DepTable table. /// </summary> public static IDataReader GetAll() { return SqlHelper.ExecuteReader( GetReadConnectionString(), CommandType.StoredProcedure, "DepTable_SelectAll", null); } /// <summary> /// Gets a page of data from the DepTable table. /// </summary> /// <param name="pageNumber">The page number.</param> /// <param name="pageSize">Size of the page.</param> /// <param name="totalPages">total pages</param> public static IDataReader GetPage( int pageNumber, int pageSize, out int itemCount) { itemCount = GetCount(); SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "DepTable_SelectPage", 2); sph.DefineSqlParameter("@PageNumber", SqlDbType.Int, ParameterDirection.Input, pageNumber); sph.DefineSqlParameter("@PageSize", SqlDbType.Int, ParameterDirection.Input, pageSize); return sph.ExecuteReader(); } } }
主要方法如下:
GetPage 获取分页数据
GetAll 获取所有数据
GetCount 获取总数
GetOne 获取某个数据
Delete 删除
Update 更新
第三步:生成网络通讯程序中使用的实体类(使用protobuf.net进行序列化)
模板生成的实体类如下:
// Author: msdc // Created: 2015-2-8 // Last Modified: 2015-2-8 using System; using System.Collections; using System.Collections.Generic; using System.Data; using mojoportal.Data; namespace mojoportal.Business { [ProtoContract] public class DepTable { #region Constructors public DepTable() {} #endregion #region Private Properties private int id = -1; private string department = string.Empty; #endregion #region Public Properties [ProtoMember(1)] public int Id { get { return id; } set { id = value; } } [ProtoMember(2)] public string Department { get { return department; } set { department = value; } } #endregion } }
第四步:用模板生成操作类
生成的操作类代码如下:
// Author: msdc // Created: 2015-2-8 // Last Modified: 2015-2-8 using System; using System.Collections; using System.Collections.Generic; using System.Data; using mojoportal.Data; namespace mojoportal.Business { public class DoDepTable { #region Private Methods /// <summary> /// Gets an instance of DepTable. /// </summary> /// <param name="id"> id </param> private static DepTable GetDepTable( int id) { using(IDataReader reader = DBDepTable.GetOne( id)) { return PopulateFromReader(reader); } } private static DepTable PopulateFromReader(IDataReader reader) { DepTable depTable = new DepTable(); if(reader.Read()) { depTable.Id = Convert.ToInt32(reader["Id"]); depTable.Department = reader["Department"].ToString(); } return depTable; } /// <summary> /// Persists a new instance of DepTable. Returns true on success. /// </summary> /// <returns></returns> private static bool Create(DepTable depTable) { int newID = 0; newID = DBDepTable.Create( depTable.Department); depTable.Id = newID; return (newID > 0); } /// <summary> /// Updates this instance of DepTable. Returns true on success. /// </summary> /// <returns>bool</returns> private static bool Update(DepTable depTable) { return DBDepTable.Update( depTable.Id, depTable.Department); } #endregion #region Public Methods /// <summary> /// Saves this instance of DepTable. Returns true on success. /// </summary> /// <returns>bool</returns> public static bool Save(DepTable depTable) { if( depTable.Id > 0) { return Update(depTable); } else { return Create(depTable); } } #endregion #region Static Methods /// <summary> /// Deletes an instance of DepTable. Returns true on success. /// </summary> /// <param name="id"> id </param> /// <returns>bool</returns> public static bool Delete( int id) { return DBDepTable.Delete( id); } /// <summary> /// Gets a count of DepTable. /// </summary> public static int GetCount() { return DBDepTable.GetCount(); } private static IList<DepTable> LoadListFromReader(IDataReader reader) { IList<DepTable> depTableList = new List<DepTable>(); try { while (reader.Read()) { DepTable depTable = new DepTable(); depTable.Id = Convert.ToInt32(reader["Id"]); depTable.Department = reader["Department"].ToString(); depTableList.Add(depTable); } } finally { reader.Close(); } return depTableList; } /// <summary> /// Gets an IList with all instances of DepTable. /// </summary> public static IList<DepTable> GetAll() { IDataReader reader = DBDepTable.GetAll(); return LoadListFromReader(reader); } /// <summary> /// Gets an IList with page of instances of DepTable. /// </summary> /// <param name="pageNumber">The page number.</param> /// <param name="pageSize">Size of the page.</param> /// <param name="totalPages">total pages</param> public static IList<DepTable> GetPage(int pageNumber, int pageSize, out int itemCount) { itemCount = 1; IDataReader reader = DBDepTable.GetPage(pageNumber, pageSize, out itemCount); return LoadListFromReader(reader); } #endregion } }
模板生成的是一个基本的操作,如果我们有另外的自定义的需求,那么需要逐层添加代码。
【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)
【开源下载】基于TCP网络通信的自动升级程序c#源码
【开源下载】基于winform的xml菜单编辑器(c#源码)
【模板下载】分享我所使用的数据库框架