自动生产数据层代码的.net2005的插件程序(TNND 本来想发到CodeProject上去,结果人家说要英文说明才行.)

介绍了一个用于自动生成C#代码的小工具,通过读取数据库表结构和使用模板文件,能够快速生成数据层代码及SQL存储过程,有效减少手动编码的工作量。

说明

最近完成的一个小工具的升级改进升到.NET2005,用于C#(其它语言其实也可以,只要更改模板文件既可)自动产生代码.根据模板文件,及数据库表的关系,来自动产生代码.为了减少重复劳动.的工作量.

原理

根据数据库里的系统表来获得数据库信息,然后产生数据表的关系,然后根据数据库信息替换板模文件中的相应内容从而生成 完成数据层的C#外接程序 源文件,及SQL 存储过程.

不足

在模板文件那块应该做成类似字典的形式,有一定的语法定义就更完美了.

产生的代码

____________________________________________________ .CS

using System;
using System.Data;
using System.Collections;
using System.Data.SqlClient;

namespace DodeAutoTest
{
 public class OrderDetailsOP
 {
  private SqlConnection conn=new SqlConnection(@"server=info-jinlei/netsdk;database=northwind;user id=sa;pwd=goodone");

  public OrderDetailsOP()
  {
  }

  public ArrayList OrderDetails_Get(out string E)
  {
   SqlDataReader drOrderDetails=null;
   SqlCommand cmdOrderDetails=new SqlCommand();
   cmdOrderDetails.CommandType=CommandType.StoredProcedure;
   cmdOrderDetails.Connection=conn;
   cmdOrderDetails.CommandText="p_OrderDetails_Get";
   
   
   
   ArrayList alOrderDetails=new ArrayList();
   
   try
   {
    E="1";
    conn.Open();   
    drOrderDetails=cmdOrderDetails.ExecuteReader();
    while(drOrderDetails.Read())
    {
     OrderDetails srcOrderDetails=new OrderDetails();
     
     
     srcOrderDetails.OrderID=Convert.ToInt32(drOrderDetails["OrderID"]);

_____________________________________________________________ sql 存储过程

ALTER  PROCEDURE dbo.p_OrderDetails_UpdByOrderID
 @OrderID int,
 @ProductID int,
@UnitPrice money,
@Quantity smallint,
@Discount real
AS
BEGIN
 UPDATE
 [OrderDetails]
 SET
 
ProductID=@ProductID,UnitPrice=@UnitPrice,Quantity=@Quantity,Discount=@Discount
 WHERE
 OrderID = @OrderID
END

GO

模板文件

___________________________________________________________cs文件的模板

using System;
using System.Data;
using System.Collections;
using System.Data.SqlClient;

namespace <%namespace%>
{
 public class <%class%>OP
 {
  private SqlConnection conn=new SqlConnection(@"<%connstr%>");

  public <%class%>OP()
  {
  }

___________________________________________________________sql存储过程的模板

<add%
CREATE PROCEDURE dbo.p_<%tabname%>_Add
 <%paddparm%>
AS
BEGIN
 INSERT INTO [<%tabname%>]
 <%addintfield%>
 VALUES
 <%addvaluefield%>
 
 <iden- SET @-outputfield- = @@IDENTITY -iden>
END

  public ArrayList <%tabname%>_Get(<parkey- -keytype- -key-,-parkey>out string E)
  {
   SqlDataReader dr<%tabname%>=null;
   SqlCommand cmd<%tabname%>=new SqlCommand();
   cmd<%tabname%>.CommandType=CommandType.StoredProcedure;
   cmd<%tabname%>.Connection=conn;
   cmd<%tabname%>.CommandText="p_<%tabname%>_Get";
   

愿望

我愿意把程序发给任何人,希望能够不断升级改进,使之成为一款非常好的工具

另:TNND 的我发到CODEPROJEC上去,居然把我的文章删了,我用的是中英两种文字的.发了个这种文件给我.

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值