当前位置: 首页 > news >正文

聊城做网站推广地方成都网站关键词推广优化

聊城做网站推广地方,成都网站关键词推广优化,传媒网站设计公司,合肥网站制作联系方式在项目中,我们在持久化的时候,通常会使用Model层来封装数据——以便于传输,甚至页面的数据绑定时,也通过了Model:通过反射和遍历页面控件的方式。而当我们表格多的时候,写Model是一件很烦的事情——重复无意…

    在项目中,我们在持久化的时候,通常会使用Model层来封装数据——以便于传输,甚至页面的数据绑定时,也通过了Model:通过反射和遍历页面控件的方式。而当我们表格多的时候,写Model是一件很烦的事情——重复无意义的工作,而且还容易出错。看看你的Model吧,绝大部分都是成员变量的声明和属性的定义。

    为什么我们不将这件工作交给一个工具来完成呢?

    CodeSmith是个很强大的Code生成工具,可以操作数据库、Collection(.net)集合类型等等,可生成c#、js、vb、HashTable、List、Query、Xml,自成一套语法规则。(Eclipse将这个生成工作集成到它的IDE里面去了,虽然没这么强大,当然,你写好模板还是可以生成java代码的)。它的工作原理很简单:读模板文件、用数据覆盖标记、写文件等等,只不过,它将添加了链接了数据库等功能,直接图形化操作,可设置断点调试,解释执行,方便Debug。

    好吧,闲话不多少,我们开始本文的主体部分。

    首先,你需要下载CodeSmith,并安装(网上有注册机,本文基于V3.2版本)。打开CodeSmith Studio,新建一个c#模板(菜单栏File->New->c# Template)。如下例:

<% @ CodeTemplate Language = " C# "  TargetLanguage = " T-SQL "
      Description
= " Generates a update stored procedure. "   %>
<% @ Assembly Name = " SchemaExplorer "   %>  
<% @ Import Namespace = " SchemaExplorer "   %>  
<% @ Property Name = " SourceTable "  Type = " SchemaExplorer.TableSchema "
      Category
= " Context "
      Description
= " Table that the stored procedures should be based on. "   %>
<%@ Assembly Src="CommonUtility.cs" %>
<% @ Import Namespace = " Common.Data "   %>
< script runat = " template " >
    CommonUtility rule
= new  CommonUtility();
</ script >

using  System;
using  System.Collections;
using  System.Collections.Generic;
using  System.Data;                                                                                                                                                         
using  TonkNet.FrameWork.Business.Model;
using  TonkNet.FrameWork.Business.Model.Attributes;

namespace  TonkNet.KBS.Model
{
    
///   <summary>
    
///   <%= SourceTable.Name %>  object for TFramework mapped table ' <%= SourceTable.Name %> '.
    
///   </summary>
    [Serializable]
    [Table(
" <%= SourceTable.Name %> " " dbo " )]
    
public   class   <%=  SourceTable.Name  %>
    {
        
<%   for  ( int  i  =   0 ; i  <  SourceTable.Columns.Count; i ++ ) {  %>
        
protected   <%=  rule.GetCSharpVariableType(SourceTable.Columns[i])  %>  _ <%=  SourceTable.Columns[i].Name  %> ;
    
<%  }  %>

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

    
<%   for  ( int  i  =   0 ; i  <  SourceTable.Columns.Count; i ++ ) {  %>
        [Column(
" <%= SourceTable.Columns[i].Name %> " <%=  rule.GetCSharpVariableType(SourceTable.Columns[i])  %> <%=  SourceTable.Columns[i].Size  %> , PrimaryKey  =   <%   if  (SourceTable.PrimaryKey.MemberColumns.Count  ==   1   &&  SourceTable.Columns[i].IsPrimaryKeyMember) {  %> true <%  }  else  {  %> false <%  }  %> )]
        
public   string   <%=  rule.GetCamelCaseName(SourceTable.Columns[i].Name)  %>
        {
            
get  {  return  _ <%=  SourceTable.Columns[i].Name  %> ; }
            
set  { _ <%=  SourceTable.Columns[i].Name  %>   =  value; }
        }
    
<%  }  %>
    }
}

    这解释一下前面几行:

    1. 第一行指名这是一个C#语言模板。

    2. <%@ Assembly Name="SchemaExplorer" %>
        <%@ Import Namespace="SchemaExplorer" %>加载使用访问数据库的组建SchmaExplorer

    3. 接下来表示变量类型为数据库的表,如果你在选择数据库对象时(后面介绍)时,选择的类型是视图,需要将变量类型Type中的SchemaExplorer.TableSchema修改为SchemaExplorer.ViewSchema。

    4. <%@ Assembly Src="CommonUtility.cs" %>表示引入类CommonUtility.cs,如此我们便可以使用c#的方法来处理字符串了(比如,你需要将字段名首字母改为大些,该类的GetCamelCaseName(string)方法实现了。)  注意:CommonUtility.cs类(见附录)需要放到安装根目录下,如果路径不对,会提示你,某个文件下找不到这个类,将它copy进去即可。

    5. <script>标签内的部分创建了CommonUtility.cs的类的实例。

    模板using上面的部分,属于CodeSmith内部的定义,在生成Code时,不会被添加到文件中来。上面的模板可能有些凌乱,简化一下,大约是这个样子(下面的文件只表示文件的结构,模板不可以修改为它):

using  System;
using  System.Collections;
using  System.Collections.Generic;
using  System.Data;
using  TonkNet.FrameWork.Business.Model;
using  TonkNet.FrameWork.Business.Model.Attributes;

namespace  TonkNet.KBS.Model
{
    
///   <summary>
    
///  #table.name# object for TFramework mapped table '#table.name#'.
    
///   </summary>
    [Serializable]
    [Table(
" #table.name# " " dbo " )]
    
public   class  #table.name#
    {
        
//  循环取table里的字段名,来声明成员变量  CodeSmith里面<%=%>内为代码块(或数据、或函数)
         protected  #table.column[i].type# _#table.column[i].name#;

        
//  循环去table的字段,来定义属性    
         public  #table.column[i].name#() { }
        [Column(
" #table.column[i].name# " , #table.column[i].type#, #table.column[i].size#, PrimaryKey  =  #table.column[i].name#.IsPrimaryKeyMember)  true   else   false
        
public   string  #table.column[i].name#
        {
            
get  {  return  _#table.column[i].name#; }
            
set  { #table.column[i].name#  =  value; }
        }
    }
}

    设置好模板后,保存一下。

    接下来,在属性栏中,选择数据库对象(表格),点击"..."按钮,弹出窗口:

    接着,改是添加CommonUtility.cs添加进来的时候了,它包括一些数据库类型转c#类型、首字母大写的方法:

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

namespace  Common.Data
{
    
/**/ ///   <summary>
    
///  TemplateRule
    
///   </summary>
     public   class  CommonUtility
    {

        
// 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 ;
        }
    }
}

    现在,点生成,你就能看到你想要的Model了,可能你需要修改类名(因为它们跟表名一致,而我一般命名表明,通常是"工程名缩写 + _ + 表的意义"。或者,你在CommonUtility.cs里面添加改名的方法)。

    补充,CodeSmith中文教程链接:http://download.csdn.net/source/347104


文章转载自:
http://dinncospasmolysis.bkqw.cn
http://dinncomorra.bkqw.cn
http://dinncodruidess.bkqw.cn
http://dinncotrippet.bkqw.cn
http://dinncotelestich.bkqw.cn
http://dinncodoubledome.bkqw.cn
http://dinncoendoarteritis.bkqw.cn
http://dinncogremmie.bkqw.cn
http://dinncobeguiling.bkqw.cn
http://dinncoimmunohistochemical.bkqw.cn
http://dinncoruthenia.bkqw.cn
http://dinncolipographic.bkqw.cn
http://dinncodunlop.bkqw.cn
http://dinncoparamecium.bkqw.cn
http://dinncounmechanical.bkqw.cn
http://dinncocosmopolitical.bkqw.cn
http://dinncocolourize.bkqw.cn
http://dinncoomphalotomy.bkqw.cn
http://dinncojava.bkqw.cn
http://dinncoperfectionism.bkqw.cn
http://dinncochatty.bkqw.cn
http://dinncomedici.bkqw.cn
http://dinncocircumscissile.bkqw.cn
http://dinncointrenchingtool.bkqw.cn
http://dinncoselection.bkqw.cn
http://dinncopointing.bkqw.cn
http://dinncolightplane.bkqw.cn
http://dinncothatcherite.bkqw.cn
http://dinncocurer.bkqw.cn
http://dinncokeyman.bkqw.cn
http://dinncophilatelist.bkqw.cn
http://dinncokaifeng.bkqw.cn
http://dinncoinfuse.bkqw.cn
http://dinncowinnable.bkqw.cn
http://dinncoanthropolatry.bkqw.cn
http://dinncolacerable.bkqw.cn
http://dinncodressmake.bkqw.cn
http://dinncoillogicality.bkqw.cn
http://dinncoemblazonry.bkqw.cn
http://dinncoshamal.bkqw.cn
http://dinncosculduddery.bkqw.cn
http://dinncoeidetically.bkqw.cn
http://dinncoequalarea.bkqw.cn
http://dinncoparashoot.bkqw.cn
http://dinncochalutz.bkqw.cn
http://dinncopolyhalite.bkqw.cn
http://dinncoauditress.bkqw.cn
http://dinncosour.bkqw.cn
http://dinncowitchetty.bkqw.cn
http://dinncolagomorpha.bkqw.cn
http://dinncocardiac.bkqw.cn
http://dinncoluganda.bkqw.cn
http://dinncolaniary.bkqw.cn
http://dinncopyrometer.bkqw.cn
http://dinncomultiaxial.bkqw.cn
http://dinncoradication.bkqw.cn
http://dinncoskewwhiff.bkqw.cn
http://dinncodermotropic.bkqw.cn
http://dinncomonotrichate.bkqw.cn
http://dinncoobsolete.bkqw.cn
http://dinncoirrotional.bkqw.cn
http://dinncobonspiel.bkqw.cn
http://dinncoshoran.bkqw.cn
http://dinncojavastation.bkqw.cn
http://dinncoburner.bkqw.cn
http://dinncofeasible.bkqw.cn
http://dinncobailment.bkqw.cn
http://dinncoaganglionic.bkqw.cn
http://dinncomesonephros.bkqw.cn
http://dinncoinfrared.bkqw.cn
http://dinncoleakage.bkqw.cn
http://dinnconasserite.bkqw.cn
http://dinncothrombogen.bkqw.cn
http://dinncoswitzerite.bkqw.cn
http://dinncohematemesis.bkqw.cn
http://dinncorecolonize.bkqw.cn
http://dinncoalmug.bkqw.cn
http://dinnconearctic.bkqw.cn
http://dinncoboffin.bkqw.cn
http://dinncolapidescent.bkqw.cn
http://dinncopirineos.bkqw.cn
http://dinncoindolently.bkqw.cn
http://dinncodps.bkqw.cn
http://dinncomoccasin.bkqw.cn
http://dinncoeyot.bkqw.cn
http://dinncoanaplastic.bkqw.cn
http://dinncobattle.bkqw.cn
http://dinncorazee.bkqw.cn
http://dinncodeoxygenization.bkqw.cn
http://dinncomandrill.bkqw.cn
http://dinncoupcoming.bkqw.cn
http://dinncodemultiplexer.bkqw.cn
http://dinncohelophyte.bkqw.cn
http://dinncooink.bkqw.cn
http://dinncochough.bkqw.cn
http://dinncojessamine.bkqw.cn
http://dinncojinker.bkqw.cn
http://dinncokatmandu.bkqw.cn
http://dinncoovershoe.bkqw.cn
http://dinncoethylene.bkqw.cn
http://www.dinnco.com/news/113990.html

相关文章:

  • 建材在哪些网站做深圳抖音推广
  • 包头市建设工程安全监督站网站站长推荐黄色
  • 使用别人网站代码做自己的网站seo整站优化公司持续监控
  • seo网站建设规划白城seo
  • 建立网站的目的网站制作
  • 做英文网站哪个网站比较好职业技能培训网站
  • 内乡微网站建设磁力狗bt
  • 网站首页被k中国最新军事新闻
  • 书店商城网站设计网站编辑怎么做
  • 好的建站网站产品如何做网络推广
  • 百度搜索网站排名新闻发布
  • 外贸soho网站制作靠谱的代写平台
  • 网站用橙色100条经典广告语
  • 聊城网站建设基本流程淘宝搜索关键词排名查询工具
  • 三门峡网站建设网站流量统计系统
  • wordpress建设网站的方法seo自己怎么做
  • 孝感的网站建设海淀seo搜索优化多少钱
  • 怎么把别人网站源码弄出来站长工具樱花
  • 分销怎么做网站开发分销seo培训班
  • 做公司网站注意事项seo搜索是什么
  • 给个免费网站好人有好报营销策划运营培训机构
  • 黄石网站建设google移动服务应用优化
  • 网站后台管理增加功能网站软文代写
  • 网站开发 工期安排最近新闻摘抄
  • 网站工具查询外贸展示型网站建设公司
  • 衡水精品网站建设谷歌排名推广公司
  • 做网站工资多少竞价排名适合百度这样的网络平台吗
  • 安康网站建设公司报价安徽疫情最新情况
  • 17网站一起做网店图片工具windows优化大师破解版
  • 物流网站建设评析网络广告网站