VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > SQL教程 >
  • 数据库组件 Hxj.Data (一)(介绍篇)

    Hxj.Data经过几个月的开发,终于发布了一个版本,并同时发布实体生成工具。在开发过程参考了多个ORM框架,特别是NBear,MySoft等。吸取了他们的一些精华,加入自己的新思想。

      目前支持Sql2000\2005,MsAccess,Oracle,SQLite,MySQL,如有需要可再扩展。

      数据库实体生成的代码Northwind数据库中Products表:

//------------------------------------------------------------------------------ 
// <auto-generated> 
//     此代码由工具生成。 
//     运行时版本:2.0.50727.4200 
// 
//     对此文件的更改可能会导致不正确的行为,并且如果 
//     重新生成代码,这些更改将会丢失。 
// </auto-generated> 
//------------------------------------------------------------------------------ 

using System; 
using System.Data; 
using System.Data.Common; 
using Hxj.Data; 
using Hxj.Data.Common; 

namespace Hxj.Model 
{ 

    /// <summary> 
    /// 实体类Products 。(属性说明自动提取数据库字段的描述信息) 
    /// </summary> 
    [Serializable] 
    public class Products : Entity 
    { 
        public Products():base("Products") {} 

        #region Model 
        private int _ProductID; 
        private string _ProductName; 
        private int? _SupplierID; 
        private int? _CategoryID; 
        private string _QuantityPerUnit; 
        private decimal? _UnitPrice; 
        private int? _UnitsInStock; 
        private int? _UnitsOnOrder; 
        private int? _ReorderLevel; 
        private bool _Discontinued; 
        /// <summary> 
        /// 
        /// </summary> 
        public int ProductID 
        { 
            get{ return _ProductID; } 
            set 
            { 
                this.OnPropertyValueChange(_.ProductID,_ProductID,value); 
                this._ProductID=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public string ProductName 
        { 
            get{ return _ProductName; } 
            set 
            { 
                this.OnPropertyValueChange(_.ProductName,_ProductName,value); 
                this._ProductName=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public int? SupplierID 
        { 
            get{ return _SupplierID; } 
            set 
            { 
                this.OnPropertyValueChange(_.SupplierID,_SupplierID,value); 
                this._SupplierID=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public int? CategoryID 
        { 
            get{ return _CategoryID; } 
            set 
            { 
                this.OnPropertyValueChange(_.CategoryID,_CategoryID,value); 
                this._CategoryID=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public string QuantityPerUnit 
        { 
            get{ return _QuantityPerUnit; } 
            set 
            { 
                this.OnPropertyValueChange(_.QuantityPerUnit,_QuantityPerUnit,value); 
                this._QuantityPerUnit=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public decimal? UnitPrice 
        { 
            get{ return _UnitPrice; } 
            set 
            { 
                this.OnPropertyValueChange(_.UnitPrice,_UnitPrice,value); 
                this._UnitPrice=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public int? UnitsInStock 
        { 
            get{ return _UnitsInStock; } 
            set 
            { 
                this.OnPropertyValueChange(_.UnitsInStock,_UnitsInStock,value); 
                this._UnitsInStock=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public int? UnitsOnOrder 
        { 
            get{ return _UnitsOnOrder; } 
            set 
            { 
                this.OnPropertyValueChange(_.UnitsOnOrder,_UnitsOnOrder,value); 
                this._UnitsOnOrder=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public int? ReorderLevel 
        { 
            get{ return _ReorderLevel; } 
            set 
            { 
                this.OnPropertyValueChange(_.ReorderLevel,_ReorderLevel,value); 
                this._ReorderLevel=value; 
            } 
        } 
        /// <summary> 
        /// 
        /// </summary> 
        public bool Discontinued 
        { 
            get{ return _Discontinued; } 
            set 
            { 
                this.OnPropertyValueChange(_.Discontinued,_Discontinued,value); 
                this._Discontinued=value; 
            } 
        } 
        #endregion 

        #region Method 
        /// <summary> 
        /// 获取实体中的标识列 
        /// </summary> 
        public override Field GetIdentityField() 
        { 
            return _.ProductID; 
        } 
        /// <summary> 
        /// 获取实体中的主键列 
        /// </summary> 
        public override Field[] GetPrimaryKeyFields() 
        { 
            return new Field[] { 
                _.ProductID}; 
        } 
        /// <summary> 
        /// 获取列信息 
        /// </summary> 
        public override Field[] GetFields() 
        { 
            return new Field[] { 
                _.ProductID, 
                _.ProductName, 
                _.SupplierID, 
                _.CategoryID, 
                _.QuantityPerUnit, 
                _.UnitPrice, 
                _.UnitsInStock, 
                _.UnitsOnOrder, 
                _.ReorderLevel, 
                _.Discontinued}; 
        } 
        /// <summary> 
        /// 获取值信息 
        /// </summary> 
        public override object[] GetValues() 
        { 
            return new object[] { 
                this._ProductID, 
                this._ProductName, 
                this._SupplierID, 
                this._CategoryID, 
                this._QuantityPerUnit, 
                this._UnitPrice, 
                this._UnitsInStock, 
                this._UnitsOnOrder, 
                this._ReorderLevel, 
                this._Discontinued}; 
        } 
        /// <summary> 
        /// 给当前实体赋值 
        /// </summary> 
        public override void SetPropertyValues(IDataReader reader) 
        { 
            this._ProductID = DataUtils.ConvertValue<int>(reader["ProductID"]); 
            this._ProductName = DataUtils.ConvertValue<string>(reader["ProductName"]); 
            this._SupplierID = DataUtils.ConvertValue<int?>(reader["SupplierID"]); 
            this._CategoryID = DataUtils.ConvertValue<int?>(reader["CategoryID"]); 
            this._QuantityPerUnit = DataUtils.ConvertValue<string>(reader["QuantityPerUnit"]); 
            this._UnitPrice = DataUtils.ConvertValue<decimal?>(reader["UnitPrice"]); 
            this._UnitsInStock = DataUtils.ConvertValue<int?>(reader["UnitsInStock"]); 
            this._UnitsOnOrder = DataUtils.ConvertValue<int?>(reader["UnitsOnOrder"]); 
            this._ReorderLevel = DataUtils.ConvertValue<int?>(reader["ReorderLevel"]); 
            this._Discontinued = DataUtils.ConvertValue<bool>(reader["Discontinued"]); 
        } 
        /// <summary> 
        /// 给当前实体赋值 
        /// </summary> 
        public override void SetPropertyValues(DataRow row) 
        { 
            this._ProductID = DataUtils.ConvertValue<int>(row["ProductID"]); 
            this._ProductName = DataUtils.ConvertValue<string>(row["ProductName"]); 
            this._SupplierID = DataUtils.ConvertValue<int?>(row["SupplierID"]); 
            this._CategoryID = DataUtils.ConvertValue<int?>(row["CategoryID"]); 
            this._QuantityPerUnit = DataUtils.ConvertValue<string>(row["QuantityPerUnit"]); 
            this._UnitPrice = DataUtils.ConvertValue<decimal?>(row["UnitPrice"]); 
            this._UnitsInStock = DataUtils.ConvertValue<int?>(row["UnitsInStock"]); 
            this._UnitsOnOrder = DataUtils.ConvertValue<int?>(row["UnitsOnOrder"]); 
            this._ReorderLevel = DataUtils.ConvertValue<int?>(row["ReorderLevel"]); 
            this._Discontinued = DataUtils.ConvertValue<bool>(row["Discontinued"]); 
        } 
        #endregion 

        #region _Field 
        /// <summary> 
        /// 字段信息 
        /// </summary> 
        public class _ 
        { 
            public readonly static Field All = new Field("*","Products"); 
            public readonly static Field ProductID = new Field("ProductID","Products","ProductID"); 
            public readonly static Field ProductName = new Field("ProductName","Products","ProductName"); 
            public readonly static Field SupplierID = new Field("SupplierID","Products","SupplierID"); 
            public readonly static Field CategoryID = new Field("CategoryID","Products","CategoryID"); 
            public readonly static Field QuantityPerUnit = new Field("QuantityPerUnit","Products","QuantityPerUnit"); 
            public readonly static Field UnitPrice = new Field("UnitPrice","Products","UnitPrice"); 
            public readonly static Field UnitsInStock = new Field("UnitsInStock","Products","UnitsInStock"); 
            public readonly static Field UnitsOnOrder = new Field("UnitsOnOrder","Products","UnitsOnOrder"); 
            public readonly static Field ReorderLevel = new Field("ReorderLevel","Products","ReorderLevel"); 
            public readonly static Field Discontinued = new Field("Discontinued","Products","Discontinued"); 
        } 
        #endregion 

    } 
} 

     

      数据组件默认入口为:Hxj.Data.DbSession.Default 会自动读取config文件中connectionStrings节点的最后一个连接配置。

当然可根据不同的数据连接实例化新的DbSession。

 

查询示例:

1、查询Products表所有数据的信息,返回实体列表。

List<Products> list = DbSession.Default.From<Products>().ToList();

 

2、查询其他的简单示例。

DbSession.Default.From<Products>()
                //.Select(Products._.ProductID)
                //.GroupBy(Products._.CategoryID.GroupBy && Products._.ProductName.GroupBy)
                // .InnerJoin<Suppliers>(Suppliers._.SupplierID == Products._.SupplierID)
                // .Select(Products._.CategoryID, Products._.ProductName, Products._.ProductID)//, Suppliers._.CompanyName, Suppliers._.ContactName
                //.OrderBy(Products._.ProductID.Asc)
                //.Where((Products._.ProductName.Contain(null) && Products._.UnitPrice > 1) || Products._.CategoryID == 2)
                //.UnionAll(DbSession.Default.From<Products>().Select(Products._.ProductID))
                .Page(10, 1)
                //.ToList();
                .ToDataSet();

添加示例:
例子是web下的。
//新建一个实体
           Products p = new Products();

           //开启修改  (开启修改后的添加操作将只insert赋值过的字段)
           p.Attach();

           //获取页面中输入的值
           EntityUtils.UpdateModel<Products>(p, Request.Form, "txt_");

           //返回值  如果有自增长字段,则返回自增长字段的值
           int returnValue = DbSession.Default.Insert<Products>(p);

 

修改示例:

修改Products表第一条数据的ProductName的值。

//获取Products表第一行
            Products p = DbSession.Default.From<Products>().ToFirst();

            //开启修改   (修改操作之前 必须执行此方法)
            p.Attach();

            p.ProductName = txtValue.Text.Trim();          
           
            //更新 
            //返回0表示更新失败 组件有事务会自动回滚  
            //返回1表示更新成功   
            //更新成功返回值就是受影响的条数
            int returnvalue = DbSession.Default.Update<Products>(p);

删除示例:

参数为主键的值,也可传入实体。

//删除  条件 ProductID=2 
            //返回0表示删除失败 组件有事务会自动回滚  
            //返回1表示删除成功   
            //删除成功返回值就是受影响的条数
            int returnvalue = DbSession.Default.Delete<Products>(2);

 

组件还支持事务,批处理等功能。

 

下载

 

http://www.cnblogs.com/huxj/archive/2009/11/21/1607791.html


作者:steven hu
出处:http://www.cnblogs.com/huxj


相关教程