65.9K
CodeProject 正在变化。 阅读更多。
Home

DBLayer Wizard V 1.0

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.42/5 (22投票s)

2005年10月18日

2分钟阅读

viewsIcon

77591

downloadIcon

1523

DBLayer Wizard 是一个代码生成器,它使用 ADO.NET 和 SQL Server 2000 在 C# 中生成数据层类。

引言

这是 DBLayer Wizard 的第一个版本。它是一个以 CS 文件格式生成 N 层架构中的数据层的工具。这有助于开发人员节省在每个新项目中编写相同代码的时间。我们试图提供最佳的编码和数据访问模式,以满足速度、易用性、可靠性、鲁棒性和可移植性。

正如我们上面所说,这个工具的主要目标是节省开发人员在使用 .NET 语言的 N 层应用程序中的时间。我们还非常努力地涵盖了许多数据访问方法;为此,我们研究了许多数据层框架,因此我们在这里提供了许多用于数据库操作的方法和选项。

特点

  • 创建一个名为 DB 的类,该类包含任何应用程序中的常用数据访问功能,例如执行内联 SQL、执行存储过程和执行事务。
  • 为每个表创建一个类,该类执行最常见的操作,例如按主键选择、按外键选择、选择所有记录、插入、更新和删除。
  • 创建一个类来执行存储过程。对于每个存储过程,提供返回 (DataSet, DataReader 或返回值) 的能力。
  • 生成的代码基于模板,因此开发人员可以使用保存和打开自定义模板进行自定义。
  • 所有生成的 CS 文件都保存在您选择的文件夹中。

使用 DataLayer wizard 代码生成器

  1. 定义 SQL Server 信息(服务器名称、身份验证方法、数据库名称)。
  2. 选择您要为其生成 .NET 类的表。
  3. 选择您要为其生成方法的存储过程。
  4. 为表 [DataSetDataReader 或两者兼有] 和存储过程选择返回数据类型。
  5. 定义将用于生成 .NET 代码的模板。
  6. 定义代码将生成的文件夹。

从您的应用程序中使用生成的代码

在这里,我们将看到一些如何使用生成的代码的示例。我们正在以 NorthWind 作为示例数据库。这应该作为类开发人员的指南。

  1. 如何执行内联 SQL
    //DBlayer is the namespace of generated code
    //all classes and method are static method 
    //Execute Common method form the base class 
    DataSet ds=DBLayer.DB.Execute("SELECT * FROM Customers");
    //Execute Scalar (Avg,Count,Sum,..)
    object result=DBLayer.DB.ExecuteScalar("SELECT COUNT(*) FROM Customers");
    //Execute Non Query like (Insert,Update,Delete)
    int AffectedRows=DBLayer.DB.ExecuteNonQuery(insert sql statment);

    如您所见,所有方法都是 static,基本命名空间是 DBlayer

  2. 如何插入到表中

    您将看到,在插入操作中,我们有三种不同的插入方式。

    //Insert
    bool result= DBLayer.DBTableShippers.Insert("New Tech","123456"); 
    //Insert DataRow
    DataRow row=DBLayer.DBTableShippers.GetSchema();
    row["CompanyName"]="New Tech";
    row["Phone"]="123456";
    bool result= DBLayer.DBTableShippers.Insert(row);
    //Insert DataTable
    DataTable table=DBLayer.DBTableShippers.GetSchemaTable();
    DataRow row1=table.NewRow();
    row1["CompanyName"]="New Tech";
    row1["Phone"]="123456";
    table.Rows.Add(row1);
    
    DataRow row2=table.NewRow();
    row2["CompanyName"]="New Tech";
    row2["Phone"]="123456";
    table.Rows.Add(row2);
    
    bool result= DBLayer.DBTableShippers.Insert(table);
  3. 如何更新表中的数据
    //Update
    bool result=DBLayer.DBTableShippers.Update(1,"Home","12365");
    //Update DataRow
    DataRow row=DBLayer.DBTableShippers.GetSchema();
    row["ShipperID"]=1;
    row["CompanyName"]="New Tech";
    row["Phone"]="123456";
    bool result=DBLayer.DBTableShippers.Update(row);
    
    //Update Data Table
    DataTable table=DBLayer.DBTableShippers.GetSchemaTable();
    DataRow row1=table.NewRow();
    row1["ShipperID"]=1;
    row1["CompanyName"]="New Tech";
    row1["Phone"]="123456";
    table.Rows.Add(row1);
    
    DataRow row2=table.NewRow();
    row2["ShipperID"]=2;
    row2["CompanyName"]="Ok";
    row2["Phone"]="123456";
    table.Rows.Add(row2);
    
    bool result=DBLayer.DBTableShippers.Update(table);
  4. 如何从表中删除数据
    //Delete All the Rows
    int DeletedRows=DBLayer.DBTableOrders.DeleteAll();
    
    //Delete By PK
    bool result=DBLayer.DBTableOrders.DeleteByPK(int.Parse(txtPK.Text));
    
    //Delete By FK
    bool result=DBLayer.DBTableOrders.DeleteByFK(txtFK.Text);
  5. 如何从表中选择数据
    //Select All Rows
    DataSet ds= DBLayer.DBTableOrders.SelectAll(); 
    //Select By Primary Key
    DataSet ds= DBLayer.DBTableOrders.SelectByPK(int.Parse(txtPKds.Text));
    //Select By Foreign Key
    DataSet ds= DBLayer.DBTableOrders.SelectByFK(txtFKds.Text);
  6. 如何执行事务
    //the method takes array of strings which 
    //is the SQL statements of the transaction
    bool result=DBLayer.DB.ExecuteTransaction(txtSQL.Lines);

数据层框架类和方法的 UML 类图

公共基类

表类

© . All rights reserved.