CYQ.Data.Orm.DBFast(Fast) 新增类介绍(含类的源码及新本子配置工具源码)

前言:

以下功用在国庆期就完了并提早发表了,但到前天才有时间写文介绍,紧假诺国庆后或者采取就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网。

也不是全不可以上,房间里有三台能上网的电话机(两台台式机+一台笔记本),下载资料还得用公司的U盘再转到自己电脑,这种半封闭的条件,分外的令人不适于,有种欲仰天吐血的觉得。

这一周我都向两个带总的领导反映了上网问题,但是没啥响应,揣测是没戏。

于是乎我惟有把其中一台能上网的台式机拿到温馨桌子上去独自占用了,勉强也能上下网了,然则遵照安全题材,我也不好在这机子里登陆私人账号。 

由此一周的钻研,我发现解决方案或者有些:因为公司的确定只是支付的电话机不让上网而已,自己按理应该可以带台式机去上网,可是我奇怪的是竟然整个部门都没人带台式机去,不清楚搞什么名头。

好了,废话不多说了,下边入作品的主旨:

CYQ.Data V5 配置工具:

最新更新了配备工具,新的界面截图如下: 

图片 1

这一次调整的功能如下:

1:编码形式:新扩展纯实体的生成:

迄今,CYQ.Data 就有了三种编码情势,分别是:

A: 枚举型(MAction、MProc)- 性能最优的编码形式

B: 实体型(充血型的ORM操作 –
需要实体类继承CYQ.Data.Orm.OrmBase,也支撑CodeFirst格局)

C: 纯实体(贫血型的ORM操作 – 通过本次新增的CYQ.Data.Orm.DBFast(Fast)静态类来操作)

2:生成的实体带表明文字。

3:默认名称空间增添{0}来表示数据库名称。

4:多数据库格局下,默认的数据库链接,约定对应的Web.Config的布局为”数据库名称Conn“。

下边示例生成一个实体类如下:

using System;

namespace Web.Entity.Demo
{
    public class Users 
    {
        /// <summary>
        /// 标识ID
        /// </summary>
        public int? ID { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName { get; set; }
        /// <summary>
        /// 创建日期
        /// </summary>
        public DateTime? CreateTime { get; set; }
    }
}

对于这样的实体,默认的数据库链接就是:

<add name=”DemoConn” connectionString=”server=.;database=demo;uid=sa;pwd=123456″/> 

假使DemoConn不存在,则会取默认的Conn项。

工具的源码下载地址:http://www.cyqdata.com/download/article-detail-426

CYQ.Data.Orm.DBFast 类介绍 

这是本身方今新扩展的静态类,首即使为了节约点代码,方便一些基础的操作。

示范代码(以下边的的Users实体为示范):

询问实体:

Users u=DB法斯特(Fast)(Fast).Find<Users>(1);//一行查一个实体。

List<Users>
uList=DBFast.Select<Users>(2,10,”id>10″);//分页查询满足条件的列表。

扩展数量:

DBFast.Insert<Users>(new Users{UserName=”a”;});

革新数据: 

DBFast.Update<Users>(new Users{UserName=”a”;},1);

删除数据: 

DBFast.Delete<Users>(1);

上述就是简的操作,扩张这一个静态类的来意,是为着简化一些例行的操作,让一行代码去化解,收缩代码量。

因而这么些静态类并不是万能的,其余复杂性的的操作模式,
提出选取枚举型的正常操作。

下边提供这几个DBFast(Fast)静态类的源码,细看源码,会发觉那多少个DB法斯特(Fast)类操作都仅是MAction类的二次封装形成的:

using System;
using System.Collections.Generic;
using System.Text;
using CYQ.Data.Table;

namespace CYQ.Data.Orm
{
    /// <summary>
    /// 迅速操作操作类。
    /// </summary>
    public static class DBFast
    {
        /// <summary>
        /// 查找单条记录
        /// </summary>
        /// <typeparam name=”T”>实体类型</typeparam>
        /// <param name=”where”>条件</param>
        /// <param name=”columns”>指定询问的列(可选)</param>
        /// <returns></returns>
        public static T Find<T>(object where, params string[] columns)
        {
            T result = default(T);
            MDataRow row = null;
            using (MAction action = GetMAction<T>())
            {
                if (columns != null && columns.Length > 0)
                {
                    action.SetSelectColumns(columns);
                }
                if (action.Fill(where))
                {
                    row = action.Data;
                }
            }
            if (row != null)
            {
                result = row.ToEntity<T>();
            }
            return result;
        }
        public static List<T> Select<T>()
        {
            int count;
            return Select<T>(0, 0, null, out count, null);
        }
        /// <summary>
        /// 列表查询
        /// </summary>
        /// <param name=”where”>查询条件[可附带 order by 语句]</param>
        /// <returns></returns>
        public static List<T> Select<T>(string where, params string[] columns)
        {
            int count;
            return Select<T>(0, 0, where, out count, columns);
        }
        /// <summary>
        /// 列表查询
        /// </summary>
        /// <param name=”topN”>查询几条</param>
        /// <param name=”where”>查询条件[可附带 order by 语句]</param>
        /// <returns></returns>
        public static List<T> Select<T>(int topN, string where, params string[] columns)
        {
            int count;
            return Select<T>(1, topN, where, out count, columns);
        }
        public static List<T> Select<T>(int pageIndex, int pageSize, params string[] columns)
        {
            int count;
            return Select<T>(pageIndex, pageSize, null, out count, columns);
        }
        public static List<T> Select<T>(int pageIndex, int pageSize, string where, params string[] columns)
        {
            int count;
            return Select<T>(pageIndex, pageSize, where, out count, columns);
        }
        /// <summary>
        /// 查找多条记下
        /// </summary>
        /// <typeparam name=”T”>实体类型</typeparam>
        /// <param name=”pageIndex”>第N页</param>
        /// <param name=”pageSize”>每页N条</param>
        /// <param name=”where”>条件</param>
        /// <param name=”count”>再次回到记录总数</param>
        /// <param name=”columns”>指定询问的列(可选)</param>
        /// <returns></returns>
        public static List<T> Select<T>(int pageIndex, int pageSize, object where, out int count, params string[] columns)
        {
            MDataTable dt = null;
            using (MAction action = GetMAction<T>())
            {
                if (columns != null && columns.Length > 0)
                {
                    action.SetSelectColumns(columns);
                }
                dt = action.Select(pageIndex, pageSize, where, out count);
            }
            return dt.ToList<T>();
        }

        /// <summary>
        /// 删除记录
        /// </summary>
        /// <typeparam name=”T”>实体类型</typeparam>
        /// <param name=”where”>条件</param>
        /// <returns></returns>
        public static bool Delete<T>(object where)
        {
            bool result = false;
            using (MAction action = GetMAction<T>())
            {
                result = action.Delete(where);
            }
            return result;
        }
        public static bool Insert<T>(T t)
        {
            return Insert<T>(t, InsertOp.ID);
        }
        /// <summary>
        /// 添加一条记下
        /// </summary>
        /// <typeparam name=”T”>实体类型</typeparam>
        /// <param name=”t”>实体对象</param>
        /// <returns></returns>
        public static bool Insert<T>(T t, InsertOp op)
        {
            bool result = false;
            MDataRow row = null;
            using (MAction action = GetMAction<T>())
            {
                action.Data.SetFromEntity(t);
                result = action.Insert(op);
                if (op != InsertOp.None)
                {
                    row = action.Data;
                }
            }
            if (row != null)
            {
                row.SetToEntity(t);
            }
            return result;
        }
        public static bool Update<T>(T t)
        {
            return Update<T>(t, null);
        }
        /// <summary>
        /// 更新记录
        /// </summary>
        /// <typeparam name=”T”>实体类型</typeparam>
        /// <param name=”t”>实体对象</param>
        /// <param name=”where”>条件</param>
        /// <returns></returns>
        public static bool Update<T>(T t, object where)
        {
            bool result = false;
            using (MAction action = GetMAction<T>())
            {
                action.Data.SetFromEntity(t);
                result = action.Update(where);
            }
            return result;
        }
        private static MAction GetMAction<T>()
        {
            string conn = string.Empty;
            MAction action = new MAction(GetTableName<T>(out conn), conn);
            action.SetNoAop();
            return action;
        }
        private static string GetTableName<T>(out string conn)
        {
            conn = string.Empty;
            Type t = typeof(T);
           
            string[] items = t.FullName.Split(‘.’);
            if (items.Length > 1)
            {
                conn = items[items.Length – 2] + “Conn”;
                items = null;
            }
            string tName = t.Name;
            t = null;
            return tName;
        }
    }

结束语:

新进的店家,一最先认为是支付电子商务类的网站,所以我经三设想的架构选型不是WebForm也不是MVC,而是打算采纳QBlog那一套的框架,还特意思立异了CYQ.Data里的XHtmlAction模板引擎,扩充了CMS的价签效应,以为要上战场,结果进去一天就发现,是支付的分销商订单系统,数据是和ERP对接,于是架构目前选型就变更为EasyUI+CYQ.Data+WebForm了。

下一周应当会招一多少个战友,人在苏黎世的有趣味的可以给自家发私信。