EF6 的开发经验(1)

一、创建基础类工厂。

namespace Core.Implement

{
    public class DatabaseFactory : Disposable, IDatabaseFactory
    {
        public DatabaseFactory()
        {
            if (dataContext == null)
            {
                dataContext = new DbgatherContext(); 
            }
        }
        private DbgatherContext dataContext;
        public DbgatherContext Get()
        {
            return dataContext ?? (dataContext = new DbgatherContext());
        }
        protected override void DisposeCore()
        {
            if (dataContext != null)
                dataContext.Dispose();
        }
    }

}


二、基础数据修改删除方法



namespace Core.Implement
{
    public class WebUtils
    {
        /// <summary>
        /// 通过唯一编号获得数据表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static T Get<T>(string url, string id)
        {
            IDictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", id);


            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.Params = parameters;
            int totalCount = 0;
            return ApiHelper.GetApiData<T>(body, ref totalCount);
        }
        /// <summary>
        /// 通过某个字段获取数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="name"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static T Get<T>(string url, string name, string value)
        {
            IDictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add(name, value);


            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.Params = parameters;
            int totalCount = 0;
            return ApiHelper.GetApiData<T>(body, ref totalCount);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static T Get<T>(string url, IDictionary<string, object> parameters)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.Params = parameters;
            int totalCount = 0;
            return ApiHelper.GetApiData<T>(body, ref totalCount);
        }


        /// <summary>
        /// 通过过滤条件获取一条数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        public static T Get<T>(string url, BaseFilter filter)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.SendObj = filter;
            int totalCount = 0;
            var result = ApiHelper.GetApiData<T>(body, ref totalCount);
            return result;
        }
        / <summary>
        / 
        / </summary>
        / <typeparam name="T"></typeparam>
        / <param name="url"></param>
        / <param name="t"></param>
        / <returns></returns>
        //public static bool Save<T>(string url, T t)
        //{
        //    var body = new ApiBody();
        //    body.SendType = SendType.Post;
        //    body.ApiUrl = url;
        //    body.SendObj = t;
        //    int totalCount = 0;
        //    var result = ApiHelper.GetApiData(body, ref totalCount);
        //    return result;
        //}


        public static bool Save<T>(string url, T t, MES_T_USER user) where T : MesEntityBase
        {
            var obj = BuildUpdateEntity(t, user);
            var body = new ApiBody();
            body.SendType = SendType.Post;
            body.ApiUrl = url;
            body.SendObj = obj;
            int totalCount = 0;
            var result = ApiHelper.GetApiData(body, ref totalCount);
            return result;
        }
        public static bool Save<T>(string url, T t, MES_T_USER user, ref string msg) where T : MesEntityBase
        {
            var obj = BuildUpdateEntity(t, user);
            var body = new ApiBody();
            body.SendType = SendType.Post;
            body.ApiUrl = url;
            body.SendObj = obj;
            int totalCount = 0;
            var result = ApiHelper.GetApiData(body, ref totalCount, ref msg);
            return result;
        }
        /// <summary>
        /// 执行某个接口
        /// </summary>
        /// <param name="url"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        public static bool Do(string url, BaseFilter filter)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.SendObj = filter;
            int totalCount = 0;
            var result = ApiHelper.GetApiData(body, ref totalCount);
            return result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool Delete(string url, string id)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            IDictionary<string, object> parameters = new Dictionary<string, object>();
            body.Params = parameters;
            parameters.Add("id", id);
            int totalCount = 0;
            var result = ApiHelper.GetApiData(body, ref totalCount);
            return result;
        }
        public static bool BatchDelete<T>(string url, string[] id)
        {
            var body = new ApiBody();
            var sendStr = string.Join(",", id);
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            IDictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("ids", sendStr);
            body.Params = parameters;
            int totalCount = 0;
            var result = ApiHelper.GetApiData(body, ref totalCount);
            return result;
        }


        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static List<T> List<T>(string url, IDictionary<string, object> parameters, ref int totalCount)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.Params = parameters;
            var result = ApiHelper.GetApiData<List<T>>(body, ref totalCount);
            return result;
        }
        public static List<T> List<T>(string url, BaseFilter filter, ref int totalCount)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.SendObj = filter;
            var result = ApiHelper.GetApiData<List<T>>(body, ref totalCount);
            return result;
        }
  
 


        public static IDictionary<string, object> DefaultParameter(string cid)
        {
            IDictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("cid", cid);
            return parameters;
        }


        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static bool Exits<T>(string url, IDictionary<string, object> parameters)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.Params = parameters;
            int totalCount = 0;
            T t = ApiHelper.GetApiData<T>(body, ref totalCount);
            if (t == null)
            {
                return false;
            }
            else
            {
                return true;
            }
        }


        /// <summary>
        /// 通过唯一编号获得数据表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool Post(string url, IDictionary<string, object> parameters)
        {
            var body = new ApiBody();
            body.SendType = SendType.Post;
            body.ApiUrl = url;
            body.Params = parameters;
            int totalCount = 0;
            return ApiHelper.GetApiData(body, ref totalCount);
        }


        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static bool Execute(string url, IDictionary<string, object> parameters)
        {
            var body = new ApiBody();
            body.SendType = SendType.Get;
            body.ApiUrl = url;
            body.Params = parameters;
            int totalCount = 0;
            return ApiHelper.GetApiData(body, ref totalCount);


        }


        private static T BuildUpdateEntity<T>(T entity, MES_T_USER currentUser) where T : MesEntityBase
        {
            if (Guid.Empty.Equals(entity.ID))
            {
                entity.ID = Guid.NewGuid();
            }
            entity.CID = currentUser.CID;
            if (entity.CREATED_BY == null)
            {
                entity.CREATED_BY = currentUser.ID.ToString();


            }
            entity.MODIFIED_BY = currentUser.ID.ToString();
            entity.SYNC_STATUS = 0;
            return entity;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值