使用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