v9.7.2018.0421   支持运行时修改DAL连接字符串
大石头 编写于 2018-04-21 14:00:47
X
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Xml.Serialization;
using NewLife.Log;
using XCode;
using XCode.Configuration;

namespace <#=Config.NameSpace#>
{<#if(Config.RenderGenEntity){#>
    /// <summary><#=Table.Description#></summary>
    [ModelCheckMode(ModelCheckModes.CheckTableWhenFirstUse)]
    public class <#=Table.Name#> : <#=Table.Name#><<#=Table.Name#>> { }
    <#
}#>
    /// <summary><#=Table.Description#></summary><#
if(!Config.RenderGenEntity){#>
    public partial class <#=Table.Name#> : <#=Config.BaseClass#><<#=Table.Name#>><#
}else{#>
    public partial class <#=Table.Name#><TEntity> : <#=Config.BaseClass#><TEntity> where TEntity : <#=Table.Name#><TEntity>, new()<#
}#>
    {
        #region 对象操作<#@include Name="对象操作.xt"#>        #endregion

        #region 扩展属性<#@include Name="扩展属性.xt"#>        #endregion

        #region 扩展查询<#@include Name="扩展查询.xt"#>        #endregion

        #region 高级查询
        // 以下为自定义高级查询的例子

        ///// <summary>
        ///// 查询满足条件的记录集,分页、排序
        ///// </summary>
        ///// <param name="key">关键字</param>
        ///// <param name="orderClause">排序,不带Order By</param>
        ///// <param name="startRowIndex">开始行,0表示第一行</param>
        ///// <param name="maximumRows">最大返回行数,0表示所有行</param>
        ///// <returns>实体集</returns>
        //[DataObjectMethod(DataObjectMethodType.Select, true)]
        //public static EntityList<<#=Config.RenderGenEntity?"TEntity":Table.Name#>> Search(String key, String orderClause, Int32 startRowIndex, Int32 maximumRows)
        //{
        //    return FindAll(SearchWhere(key), orderClause, null, startRowIndex, maximumRows);
        //}

        ///// <summary>
        ///// 查询满足条件的记录总数,分页和排序无效,带参数是因为ObjectDataSource要求它跟Search统一
        ///// </summary>
        ///// <param name="key">关键字</param>
        ///// <param name="orderClause">排序,不带Order By</param>
        ///// <param name="startRowIndex">开始行,0表示第一行</param>
        ///// <param name="maximumRows">最大返回行数,0表示所有行</param>
        ///// <returns>记录数</returns>
        //public static Int32 SearchCount(String key, String orderClause, Int32 startRowIndex, Int32 maximumRows)
        //{
        //    return FindCount(SearchWhere(key), null, null, 0, 0);
        //}

        /// <summary>构造搜索条件</summary>
        /// <param name="key">关键字</param>
        /// <returns></returns>
        private static String SearchWhere(String key)
        {
            // WhereExpression重载&和|运算符,作为And和Or的替代
            var exp = new WhereExpression();

            // SearchWhereByKeys系列方法用于构建针对字符串字段的模糊搜索
            if (!String.IsNullOrEmpty(key)) SearchWhereByKeys(exp.Builder, key);

            // 以下仅为演示,2、3行是同一个意思的不同写法,Field(继承自FieldItem)重载了==、!=、>、<、>=、<=等运算符(第4行)
            //exp &= _.Name == "testName"
            //    & !String.IsNullOrEmpty(key) & _.Name == key
            //    .AndIf(!String.IsNullOrEmpty(key), _.Name == key)
            //    | _.ID > 0;

            return exp;
        }
        #endregion

        #region 扩展操作
        #endregion

        #region 业务
        #endregion
    }
}