使用NSun快速开发V1.5.4发布

 

主要更新内容:

1、对代码生成器添加了类文件是否分开建立各自的cs文件进行了选择处理。

2、在项目中可能数据库出现datetime类型为null那么可能会有读取或操作问题,这里我加入了选择datetime类型为Nullable类型则生成后为Datetime?,因为datetime类型比较容易出现这种情况这里只单独做为全局设置来选择,如果有个别其他字段也有这样的情况那么请把元数据类型改为Nullable。

3、上一篇说道使用NSun快速开发ORM在3.5的便捷之关系生成,那么这里针对mssql来做了自动生成器设置主外键关系的表。不需要在自己选定关系,只需要在数据库中建立即可。

4、新增查询所需视图类生成,原有只对表的CRUD做了生成,这里专门为查询做了视图生成。可以使得查询便的更加容易便捷。

5、默认不做数据库选择改为mssql2005,在是用mssql2000或者其他数据库请在DBFactory初始化ConnectionDBQuery使用其构造来完成不同数据库的选择。

6、新增ConnectionDBQuery构造方法更加适应多种数据库字符串加密的形式,主要是自定义加密解密类以及方法的重载和参数选择。

7、默认sql2000支持的TOP NOT IN分页现在已改为表变量的方式。

8、在原来做groupby时如果加条件则默认为having加载了groupby后面,那么groupby之前的查询是没有的。这里重新在查询中加入having方法,可以分组前后进行分别查询。

9、原来在返回泛型List集合时都为IList接口,那么在使用net3.5类库是很多扩展方法都不能得到使用,这里都改为了泛型List类。

10、新增datediff方法实现在查询datetime类型的列,在日期查询时很多时候要查询日期。

11、新增数据库自定义函数,SelfMethodExtensions()下面部分代码中介绍使用。

 

下面是生成器界面新增功能:

未命名

部分功能代码:

1、批处理:

List<ShippersInfo> list = new List<ShippersInfo>() {
    new ShippersInfo(){CompanyName="太原",Phone="0351"},
    new ShippersInfo(){CompanyName="上海",Phone="0451"},
    new ShippersInfo(){CompanyName="北京",Phone="0551"}
};
DBQuery<ShippersInfo> dbsh = DBFactory.dbShippers;
ShippersInfo info = dbsh.SelectTopOne();
info.Phone = "88888888";
using (DbTransaction tran = dbsh.GetDbTransaction())
{
    try
    {
        dbsh.BeginBatch(list.Count + 1, tran);
        foreach (var item in list)
        {
            dbsh.Save(item);
        }
        dbsh.Save(info);
        dbsh.Delete(13);
        dbsh.EndBatch();
        tran.Commit();
    }
    catch (System.Exception ex)
    {
        tran.Rollback();
    }
}

2、连接加密构造:

            ConnectionDBQuery db2 = new ConnectionDBQuery("db");
            ConnectionDBQuery db3 = new ConnectionDBQuery(DBType.Sqlserver9, "db");
            ConnectionDBQuery db4 = new ConnectionDBQuery(constr, DBType.Sqlserver9);
            //下面为加密字符串方法
            ConnectionDBQuery db5 = new ConnectionDBQuery(typeof(DESEncrypt), "Decrypt", DBType.Sqlserver9, new object[] { desconstr, key });
            ConnectionDBQuery db6 = new ConnectionDBQuery(typeof(DESEncrypt), "Decrypt", DBType.Sqlserver9, "db");
            ConnectionDBQuery db = new ConnectionDBQuery(typeof(DESEncrypt), "Decrypt", new Type[] { typeof(string), typeof(string) }, DBType.Sqlserver9, new object[] { desconstr, key });

3、分页查询:

            DBQuery<OrdersInfo> db = DBFactory.dbOrders;
            SelectSqlSection select = db.GetSelectSqlSection();
            select.OrderBy(OrdersInfo.__requiredDate.Desc);
            select.Where(OrdersInfo.__shipCity == "London");
            DataTable dt = null;
            int countPage = 0;
            dt = db.SelectPageToDataTable(select, 10, i, out countPage);

4、分组查询:

            DBQuery<OrdersInfo> db = DBFactory.dbOrders;
            SelectSqlSection query = db.GetSelectSqlSection(OrdersInfo.__orderID.Count(), OrdersInfo.__employeeID);                  
            query.Where(OrdersInfo.__shipCity == "London");
            query.GroupBy(OrdersInfo.__employeeID);
            query.Having(OrdersInfo.__employeeID > 3);
            query.Having(OrdersInfo.__employeeID < 5);
            DataTable dt = db.SelectToDataTable(query);

5、自定义函数

//SelfMethodExtensions(DbType returndbType, string dboMethod, params object[] pars)
//SelfMethodExtensions(DbType returndbType, bool isdbo, string dboMethod, params object[] pars)
//SelfMethodExtensions(DbType returndbType, bool isdbo, string dboMethod, bool isColumninMethod, params object[] pars)
/*returndbtype:函数返回类型,
isdbo:是否为DBO,
dbomethod:方法名称,
pars:方法参数,
isColumninMethod:方法列是否为参数*/
DBQuery<OrdersInfo> db = DBFactory.dbOrders;
var select = db.GetSelectSqlSection(OrdersInfo.__employeeID.SelfMethodExtensions(DbType.Int32, true, "getemployeeida","getdate()"), OrdersInfo.__employeeID);
DataTable dt=db.SelectToDataTable(select);  

 

NSunV1.5.4(点击另存为下载):NSunV1.5.4.Core

NSunV1.5.4最新生成工具(点击另存为下载): NSunV1.5.4Generation

posted @ 2010-07-17 21:59  Dacey  Views(514)  Comments(8Edit  收藏  举报