C# 轻量级ORM 编写思维
目标:
降低研发人员门槛,提高效率,去除重复引用DLL的工作,基础配置由抽象工厂处理。
基础扩展
/// <summary> /// DataTable 转换为List 集合 /// </summary> /// <typeparam name="TResult">类型</typeparam> /// <param name="dt">DataTable</param> /// <returns></returns> public static List<TResult> ToList<TResult>(this DataTable dt) where TResult : class,new() /// <summary> /// 转换为一个DataTable /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="value"></param> /// <returns></returns> public static DataTable ToDataTable<TResult>(this IEnumerable<TResult> value) where TResult : class
业务逻辑接口
//name:wujc 2013-06-20 namespace Yc.BLL { public class DataDomain : IDataService { private readonly IDataService dal = DataAccess.CreateService(); public DataDomain() { } #region 成员方法 /// <summary> /// 获取表行数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="strWhere"></param> /// <returns></returns> public int GetRowsCount<T>(string strWhere) where T : BaseModel, new() { return dal.GetRowsCount<T>(strWhere); } /// <summary> /// 获取表行数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sql"></param> /// <returns></returns> public int GetRowsCount(string sql) { return dal.GetRowsCount(sql); } /// <summary> /// 是否存在该记录 /// </summary> public bool Exists<T>(string id) where T : BaseModel, new() { return dal.Exists<T>(id); } /// <summary> /// 增加一条数据 /// </summary> public bool Add<T>(T model) where T : BaseModel, new() { return dal.Add<T>(model); } /// <summary> /// 增加多条数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="modelList"></param> /// <returns></returns> public bool Add<T>(List<T> modelList) where T : BaseModel, new() { return dal.Add<T>(modelList); } /// <summary> /// 更新一条数据 /// </summary> public bool Update<T>(T model) where T : BaseModel, new() { return dal.Update<T>(model); } /// <summary> /// 更新多条数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="model"></param> /// <returns></returns> public bool Update<T>(List<T> modelList) where T : BaseModel, new() { return dal.Update<T>(modelList); } /// <summary> /// 删除一条数据 /// </summary> public bool Delete<T>(string id) where T : BaseModel, new() { return dal.Delete<T>(id); } /// <summary> /// 删除一条数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="id"></param> /// <returns></returns> public bool Delete<T>(T model) where T : BaseModel, new() { return dal.Delete<T>(model); } /// <summary> /// 删除多条数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="model"></param> /// <returns></returns> public bool Delete<T>(List<T> modelList) where T : BaseModel, new() { return dal.Delete<T>(modelList); } /// <summary> /// 批量删除数据 /// </summary> /// <param name="idList">逗号分隔</param> /// <returns></returns> public bool DeleteList<T>(string idList) where T : BaseModel, new() { return dal.DeleteList<T>(idList); } /// <summary> /// 得到一个对象实体 /// </summary> public T GetModel<T>(string id) where T : BaseModel, new() { return dal.GetModel<T>(id); } /// <summary> /// 得到全部对象实体 /// </summary> public List<T> GetModelList<T>(string strWhere) where T : BaseModel, new() { return dal.GetModelList<T>(strWhere); } /// <summary> /// 获得数据列表 /// </summary> public DataSet GetList<T>(string strWhere) where T : BaseModel, new() { return dal.GetList<T>(strWhere); } /// <summary> /// 获得数据表 /// </summary> public DataTable GetTable<T>(string strWhere) where T : BaseModel, new() { return dal.GetTable<T>(strWhere); } /// <summary> /// 根据分页获得数据列表 /// </summary> public DataSet GetList<T>(string strWhere, string orderby, int startIndex, int endIndex) where T : BaseModel, new() { return dal.GetList<T>(strWhere, orderby, startIndex, endIndex); } /// <summary> /// 根据分页获得数据列表 /// </summary> public DataSet GetListBySql(string sql, string orderby, int startIndex, int endIndex) { return dal.GetListBySql(sql, orderby, startIndex, endIndex); } /// <summary> /// 执行SQL语句,返回影响的记录数 /// </summary> /// <param name="SQLString">SQL语句</param> /// <returns>影响的记录数</returns> public int ExecuteSql(string SQLString) { return dal.ExecuteSql(SQLString); } /// <summary> /// 执行查询语句,返回DataSet /// </summary> /// <param name="SQLString">查询语句</param> /// <returns>DataSet</returns> public DataSet Query(string SQLString) { return dal.Query(SQLString); } /// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param> public void ExecuteSqlTran(Hashtable SQLStringList) { dal.ExecuteSqlTran(SQLStringList); } #endregion 成员方法
因为这还是个公司框架,还不能开源,不过看完以上接口定义之后,已经知道个大概了吧。
数据逻辑抽象工厂,由抽象接口层,根据配置创建抽象实例,还有缓冲池等。
数据逻辑基础方法和接口
这些很基础的,网上也一大把,我只是为了配合框架做了一些小修改。
接着,每创立一个新项目,都不需要重新再去重做一套orm 了, 引入以上所说的。
接着,新增一个Model层,值得主意的是,Model要继承Yc.Base的BaseModel。
示例:
/// <summary> /// 用户表 /// </summary> [System.Serializable()] public class UserInfo : Yc.Base.BaseModel { /// <summary> /// 初始化 /// </summary> public UserInfo() { this.TableUser = "test"; } private System.String _userInfoId; /// <summary> /// 用户Id,NVARCHAR2,128 /// </summary> public System.String UserInfoId { get { return _userInfoId ==null? "":_userInfoId; } set { _userInfoId = value; } } private System.String _name; /// <summary> /// 用户名,NVARCHAR2,500 /// </summary> public System.String Name { get { return _name ==null? "":_name; } set { _name = value; } } private System.String _pwd; /// <summary> /// 用户密码,NVARCHAR2,500 /// </summary> public System.String Pwd { get { return _pwd ==null? "":_pwd; } set { _pwd = value; } } }
再引用你该项目的Model层
一切就这样简单,希望对大家了解orm有所帮助!
by:五加乘
----------------------------
用心做产品 name:5+x
----------------------------
用心做产品 name:5+x
----------------------------