`
xqf222
  • 浏览: 124414 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

请您先登录,才能继续操作

CodeSmith生成数据表实体类

 
阅读更多

打开开始--所有程序---CodeSmith Professional 5.0.1.4983--CodeSmith Explorer

新建立到所要操作数据库的连接名称自定义为DB

打开开始--所有程序---CodeSmith Professional 5.0.1.4983--CodeSmith Studio

新建立一个模板文件BusinessObjctForTable.cst(模板文件可以Build和运行)

新建立一个文件TableUtility.cs(数据库字段到VS2005数据类型映射,命名空间和上面的命名空间保持一致)

COPY下面的代码然后点tools/build/run就完成了数据表实体类文件的生成

注意由模板BusinessObjctForTable.cst生成的"数据表名.cs"实体类文件所属命名空间Common.Model和调用的(TableUtility.cs)类文件的所属命名空间Common.Data的存在与否.在VS2005的工程中必须存在或者按您的需求自行更改。

BusinessObjctForTable.cst代码如下:

<%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" TargetLanguage="T-SQL" Description="生成更新数据表的存储过程." %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="存储过程操作的数据表名称." %>
<%@ Assembly Src="TableUtility.cs" %>
<%@ Import Namespace="Common.Data" %>
<script runat="template">TableUtility rule=new TableUtility();</script>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;

namespace Common.Model
{
/// <summary>
/// 读取数据库对应的数据表 '<%= SourceTable.Name %>'生成实体类
/// </summary>
[Serializable]
public class <%= SourceTable.Name %>
{
#region Private Member
<% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
private <%= rule.GetCSharpVariableType(SourceTable.Columns[i]) %> _<%= SourceTable.Columns[i].Name %>;
<% } %>
#endregion

#region Constructor
public <%= SourceTable.Name %>() {}

public <%= SourceTable.Name %>(
<% for (int i = 0; i < SourceTable.Columns.Count-1; i++) { %>
<%= rule.GetCSharpVariableType(SourceTable.Columns[i]) %> <%= SourceTable.Columns[i].Name %>,
<% } %>
<%= rule.GetCSharpVariableType(SourceTable.Columns[SourceTable.Columns.Count-1]) %> <%= SourceTable.Columns[SourceTable.Columns.Count-1].Name %>
)
{
<% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
_<%= SourceTable.Columns[i].Name %> = <%= SourceTable.Columns[i].Name %>;
<% } %>
}
#endregion

#region Public Properties
<% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
public <%= rule.GetCSharpVariableType(SourceTable.Columns[i]) %> <%= rule.GetCamelCaseName(SourceTable.Columns[i].Name) %>
{
get { return _<%= SourceTable.Columns[i].Name %>; }
set { _<%= SourceTable.Columns[i].Name %> = value; }
}
<% } %>
#endregion
}
}

TableUtility.cs代码如下:

using System;
using System.Text;
using CodeSmith.Engine;
using SchemaExplorer;
using System.ComponentModel;
using System.Data;

namespace Common.Data
{
//// <summary>
/// CodeSmith生成SQL Server数据表的实体类调用脚本
/// </summary>
public class TableUtility
{

//get Columns info by TableName
public ColumnSchemaCollection GetColumnCollectionByTable(TableSchema table)
{
ColumnSchemaCollection columns = new ColumnSchemaCollection(table.Columns);
return columns;
}

//Get camelcase name,such as Customer,
public string GetCamelCaseName(string str)
{
return str.Substring(0,1).ToUpper()+str.Substring(1);
}

//Get ,user,private const String USER_FIELD = "User"
public string GetMemberConstantDeclarationStatement(ColumnSchema column)
{
return GetMemberConstantDeclarationStatement("public const String ",column);
}

//such as public const String USER_TABLE = "User"
public string GetTableConstantDeclarationStatement(TableSchema table)
{
return GetMemberConstantDeclarationStatement("public const String ",table);
}
//suck as USER_TABLE
public string GetUpperStatement(TableSchema table)
{
return table.Name.ToUpper()+"_TABLE";
}
//suck as USER_FIELD
public string GetUpperStatement(ColumnSchema column)
{
return column.Name.ToUpper()+"_FIELD";
}

// such as USER_TABLE = "User"
public string GetMemberConstantDeclarationStatement(string protectionLevel, TableSchema table)
{
return protectionLevel+GetUpperStatement(table)+" = "+GetCamelCaseName(table.Name)+"";
}

//such as USERID_FIELD = "Userid"
public string GetMemberConstantDeclarationStatement(string protectionLevel,ColumnSchema column)
{
return protectionLevel+GetUpperStatement(column)+" = "+GetCamelCaseName(column.Name)+"";
}

public string GetCSharpVariableType(ColumnSchema column)
{
switch(column.DataType)
{
case DbType.AnsiString: return "string";
case DbType.AnsiStringFixedLength: return "string";
case DbType.Binary: return "byte[]";
case DbType.Boolean: return "bool";
case DbType.Byte: return "int";
case DbType.Currency: return "decimal";
case DbType.Date: return "DataTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: return "decimal";
case DbType.Double: return "double";
case DbType.Guid: return "Guid";
case DbType.Int16: return "short";
case DbType.Int32: return "int";
case DbType.Int64: return "long";
case DbType.Object: return "object";
case DbType.SByte: return "sbyte";
case DbType.Single: return "float";
case DbType.String: return "string";
case DbType.StringFixedLength: return "string";
case DbType.Time: return "TimeSpan";
case DbType.UInt16: return "ushort";
case DbType.UInt32: return "uint";
case DbType.UInt64: return "ulong";
case DbType.VarNumeric: return "decimal";
}

return null;
}

public string GetCSharpBaseType(ColumnSchema column)
{
switch(column.DataType)
{
case DbType.AnsiString: return "System.String";
case DbType.AnsiStringFixedLength: return "System.String";
case DbType.Binary: return "System.Byte[]";
case DbType.Boolean: return "System.Boolean";
case DbType.Byte: return "System.Int32";
case DbType.Currency: return "System.Decimal";
case DbType.Date: return "System.DataTime";
case DbType.DateTime: return "System.DataTime";
case DbType.Decimal: return "System.Decimal";
case DbType.Double: return "System.Double";
case DbType.Guid: return "System.Guid";
case DbType.Int16: return "System.Int16";
case DbType.Int32: return "System.Int32";
case DbType.Int64: return "System.Int64";
case DbType.Object: return "System.Object";
case DbType.SByte: return "System.SByte";
case DbType.Single: return "System.Single";
case DbType.String: return "System.String";
case DbType.StringFixedLength: return "System.String";
case DbType.Time: return "System.TimeSpan";
case DbType.UInt16: return "System.UInt16";
case DbType.UInt32: return "System.UInt32";
case DbType.UInt64: return "System.UInt64";
case DbType.VarNumeric: return "System.Decimal";
}
return null;
}
}
}

分享到:
评论

相关推荐

    codesmith生成实体类简单模板

    《使用Codesmith生成C#实体类的简易模板详解》 在软件开发过程中,尤其是在与数据库交互的业务逻辑层,实体类的创建是一项繁琐且重复的工作。 Codesmith是一款强大的代码生成工具,它允许开发者通过定制模板来自动...

    用CodeSmith生成数据库实体类的代码C#

    ### 使用CodeSmith生成数据库实体类的代码(C#) 在软件开发过程中,特别是在涉及数据库操作时,我们经常会遇到需要创建数据库实体类的情况。这些实体类通常用于封装数据表中的记录,并提供对这些记录的操作方法。...

    codesmith生成实体类、数据层类、和存储过程

    【codesmith生成实体类、数据层类、和存储过程】是一种高效的软件开发工具,它能够自动化地根据数据库结构自动生成对应的C#代码,包括实体类(Entity Class)、数据访问层(Data Access Layer)类以及与数据库交互的...

    自用的CodeSmith生成实体类模板

    帮你自动生成无聊而又必须的数据表的实体类,默认是C#,.net。

    CodeSmith生成XML的实体类(C#)

    总之,通过CodeSmith生成XML的C#实体类,可以显著减少手动编写代码的工作量,使开发者能够专注于业务逻辑,而不是基础的数据结构映射。同时,熟悉CodeSmith的模板语言和XML解析机制,也是提升开发效率的重要技能。

    自动生成实体类CodeSmith

    CodeSmith自动生成实体类,数据访问层/.................

    CodeSmith自动生成实体类的模板代码

    使用CodeSmith生成实体类的步骤大致如下: 1. **创建模板**:首先,你需要创建一个模板文件,例如`.cshtml`或`.cs`扩展名,其中包含C#代码和特殊的CodeSmith指令。在这个模板中,你可以定义每个实体类的结构,比如...

    解决CodeSmith生成mysql实体没有字段注释和表注释

    CodeSmith是一款著名的代码生成器,它能够根据数据库模式自动生成.NET代码,包括实体类、数据访问层(DAL)和业务逻辑层(BLL)。然而,有时我们可能需要自定义生成的代码,例如为MySQL实体添加字段注释和表注释,以...

    CodeSmith根据数据库表生成实体类

    里面是CodeSmith根据数据表生成实体类的例子 用的是mysql数据库 链接字符串为: Database=test;Data Source=127.0.0.1;User Id=root;Password=root;port=3306

    CodeSmith 编码生成实体类

    除了基本的实体类生成,CodeSmith还可以用于生成DAL(数据访问层)、BO(业务对象)、DAO(数据访问对象)等其他代码组件。通过熟练掌握CodeSmith,开发者可以极大地提升工作效率,减少低级错误,更专注于业务逻辑的...

    用CodeSmith生成数据库实体类的代码 VB

    根据提供的文件信息,我们可以深入探讨如何使用CodeSmith工具来生成针对特定数据库表的实体类代码。此过程将涉及对CodeSmith模板语法的理解、所需库的引入以及如何为不同编程语言(如VB.NET与C#)生成实体类的具体...

    用CodeSmith生成nhibernate的映射文件说明

    其中,“Entities”文件夹包含了由CodeSmith生成的所有实体类,“Maps”文件夹则包含了对应的映射文件。这些文件都是基于所选数据库表结构自动生成的。 ##### 4.1 查看生成的实体类 打开“Entities”文件夹,可以...

    CodeSmith 生成工具 6.5 (可生成Nhibernate)

    CodeSmith 6.5结合Nhibernate,意味着用户可以通过模板自定义生成Nhibernate所需的映射文件(.hbm.xml或使用Fluent NHibernate的配置)、实体类以及数据访问层接口和实现。 在使用CodeSmith 6.5时,用户首先需要...

    CodeSmith生成三层访问代码

    例如,如果"User"表有一个外键到"Role"表,那么在"User"实体类中可能会有对"Role"的引用,同时在DAL和BLL中会有相应的处理逻辑。 通过使用CodeSmith,开发者可以避免手动编写这些重复的代码,从而专注于更高级别的...

    codesmith生成的五层架构

    Codesmith可以自动生成业务实体类和业务服务接口,使得业务处理更加模块化,便于维护和扩展。 3. 数据访问层(Data Access Layer):这一层主要处理数据库操作,如CRUD(创建、读取、更新、删除)操作。通过...

    CodeSmith的C#实体类 数据访问层 业务逻辑层的模板

    在C#中,实体类通常包含属性,这些属性对应于数据库表的字段。CodeSmith可以根据数据库结构自动生成这些实体类,使得开发者可以专注于业务逻辑,而不是基础数据模型的创建。实体类通常遵循面向对象的设计原则,如...

    codesmith生成代码模板

    【codesmith生成代码模板】是一种高效开发工具,它利用模板技术来自动化代码生成,从而极大地提高了软件开发的效率。在IT行业中,特别是在大型项目或快速迭代的开发环境中,手动编写重复性的代码会消耗大量时间,而...

    codeSmith自动生成三层中的代码

    CodeSmith可以生成ADO.NET实体类、数据访问接口和实现,这样开发者就能专注于设计高效的数据操作,而无需关注底层数据库访问细节。 在使用CodeSmith生成三层架构代码时,你需要创建相应的模板文件。模板语言是...

    ASP.NET 中 CodeSmith可以自动生成三层代码

    CodeSmith支持自定义模板,开发者可以根据自己的需求创建模板来生成代码,包括实体类、数据访问接口、业务逻辑接口及其实现、以及表示层的控件等。这使得在ASP.NET中实现三层架构的代码生成变得轻松快捷。 1. **...

    codesmith 代码生成器和中文帮助文档

    - **数据访问层(DAL)**:自动生成ADO.NET实体类、DataTable映射、存储过程调用等代码。 - **业务逻辑层(BLL)**:根据数据模型生成业务逻辑操作的方法。 - **对象关系映射(ORM)**:支持生成NHibernate、Entity ...

Global site tag (gtag.js) - Google Analytics