Exemplo n.º 1
0
        /// <summary>
        /// 新增数据
        /// </summary>
        /// <typeparam name="T">要新增的数据类型</typeparam>
        /// <param name="newitem">要新增的数据</param>
        /// <param name="noty">新增数据的通知</param>
        /// <returns>返回新增数据的上下文</returns>
        protected DataUpdateContext AddNewData <T>(T newitem, IUpdateDataNoty noty)
        {
            CheckDataModelIsCanUpdate <T>();
            DataUpdateContext dc = new DataUpdateContext()
            {
                CheckRangle    = FieldSelectRange.All,
                UpdateRangle   = FieldSelectRange.All,
                Data           = newitem,
                ModalState     = ModalState.AddNew,
                ModalType      = typeof(T),
                UpdateDataNoty = noty
            };

            AddUpdateContext(dc);
            return(dc);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 通过主键值删除数据
        /// </summary>
        /// <typeparam name="T">要删除的数据类型</typeparam>
        /// <param name="id">要删除的数据的主键值</param>
        /// <param name="noty">删除数据的通知</param>
        /// <returns>返回删除数据的上下文</returns>
        protected DataUpdateContext DeleteDataById <T>(long id, IUpdateDataNoty noty)
            where T : class, IDataId, new()
        {
            CheckDataModelIsCanUpdate <T>();
            T delitem = new T();

            delitem.Id = id;
            DataUpdateContext dc = new DataUpdateContext()
            {
                Data           = delitem,
                ModalState     = ModalState.Delete,
                ModalType      = typeof(T),
                UpdateDataNoty = noty
            };

            AddUpdateContext(dc);
            return(dc);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 完整的修改数据
 /// </summary>
 /// <typeparam name="T">要修改的数据类型</typeparam>
 /// <param name="updateitem">要修改的数据</param>
 /// <param name="noty">修改数据的通知</param>
 /// <returns>返回修改数据的上下文</returns>
 protected DataUpdateContext UpdateData <T>(T updateitem, IUpdateDataNoty noty)
 {
     return(UpdateData(updateitem, FieldSelectRange.All, null, noty));
 }
Exemplo n.º 4
0
        /// <summary>
        /// 修改数据
        /// </summary>
        /// <typeparam name="T">要修改的数据类型</typeparam>
        /// <param name="updateitem">要修改的数据</param>
        /// <param name="updaterangle">要修改的数据的字段范围</param>
        /// <param name="updatefieldnames">updaterangle指定的范围的字段数组</param>
        /// <param name="noty">修改数据的通知</param>
        /// <returns>返回修改数据的上下文</returns>
        protected DataUpdateContext UpdateData <T>(T updateitem, FieldSelectRange updaterangle, IEnumerable <string> updatefieldnames, IUpdateDataNoty noty)
        {
            CheckDataModelIsCanUpdate <T>();
            DataUpdateContext dc = new DataUpdateContext()
            {
                CheckRangle      = updaterangle,
                CheckFieldNames  = updatefieldnames,
                UpdateRangle     = updaterangle,
                UpdateFieldNames = updatefieldnames,
                Data             = updateitem,
                ModalState       = ModalState.Update,
                ModalType        = typeof(T),
                UpdateDataNoty   = noty
            };
            string softdelKey = typeof(T).GetDataModel().GetSoftDeleteFieldName();

            if (!string.IsNullOrEmpty(softdelKey))
            {
                switch (updaterangle)
                {
                case FieldSelectRange.All:
                {
                    dc.CheckRangle      = FieldSelectRange.IgnoreFields;
                    dc.CheckFieldNames  = new string[] { softdelKey };
                    dc.UpdateRangle     = FieldSelectRange.IgnoreFields;
                    dc.UpdateFieldNames = new string[] { softdelKey };
                    break;
                }

                case FieldSelectRange.IgnoreFields:
                {
                    IEnumerable <string> x = new string[] { softdelKey };
                    if (updatefieldnames != null)
                    {
                        if (updatefieldnames.FirstOrDefault(f => string.Equals(f, softdelKey, StringComparison.OrdinalIgnoreCase)) == null)
                        {
                            x = x.Union(updatefieldnames);
                        }
                        else
                        {
                            x = updatefieldnames;
                        }
                    }
                    dc.CheckFieldNames  = x;
                    dc.UpdateFieldNames = x;
                    break;
                }

                case FieldSelectRange.OnlyFields:
                {
                    if (updatefieldnames != null)
                    {
                        IEnumerable <string> x = updatefieldnames.Where(f => !string.Equals(f, softdelKey, StringComparison.OrdinalIgnoreCase)).ToArray();
                        dc.CheckFieldNames  = x;
                        dc.UpdateFieldNames = x;
                    }
                    break;
                }
                }
            }
            AddUpdateContext(dc);
            return(dc);
        }