浪荡De逍遥哥

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在EF中有时需要用到一些通用类,在后端模型和前端模型在某些场合需要模型分离,

例如数据模型和试图模型中用到的增删改功能

  public class DBHelper<V, T>
        where V : class ,new()
        where T : class ,new()
    {


        public Result Update(V Entity)
        {
            using (var db = new DbContext())
            {

                 //此处模型转换
                var model = EntityOperation<T>.Conversion(Entity);
                db.Set<T>().Attach(model);
                db.Entry<T>(model).State = System.Data.Entity.EntityState.Modified;
                return this.SaveChanges(db);
            }
        }
        public Result UpdateForT(T Entity)
        {
            using (var db = new DbContext())
            {
                db.Set<T>().Attach(Entity);
                return this.SaveChanges(db);
            }
        }
    }

转换模型方法

   /// <summary>
        /// 转换一个字段相同的实体
        /// </summary>
        /// <param name="InObject">有值需要转换的实体</param>
        /// <returns>返回转好的 TEntity</returns>
        public static TEntity Conversion(object InObject)
        {
            var _temp = InObject.GetType().GetProperties();
            TEntity entity = new TEntity();
            foreach (var item in _temp)
            {
                object ovj = item.GetValue(InObject, null);
                if (ovj != null)
                {
                    var _obj = entity.GetType().GetProperties().FirstOrDefault(p => p.Name.ToLower() == item.Name.ToLower());
                    if (_obj != null)
                        _obj.SetValue(entity, ovj);
                }
            }
            return entity;
        }

posted on 2014-11-14 09:15  浪荡De逍遥哥  阅读(251)  评论(0编辑  收藏  举报