Exemplo n.º 1
0
        public virtual string Create()
        {
            var ctx = ModelContext.GetInstance(typeof(T));
            var obj = (T)ctx.NewObject();

            foreach (MemberHandler m in ctx.Info.Members)
            {
                if (!m.Is.RelationField && !m.Is.DbGenerate && !m.Is.AutoSavedValue)
                {
                    string s = HttpContextHandler.Instance[ControllerName + "[" + m.Name.ToLower() + "]"];
                    if (m.Is.LazyLoad)
                    {
                        object       ll = m.MemberInfo.GetValue(obj);
                        PropertyInfo pi = m.MemberInfo.MemberType.GetProperty("Value");
                        object       v  = ControllerHelper.ChangeType(s, m.MemberType.GetGenericArguments()[0]);
                        pi.SetValue(ll, v, null);
                    }
                    else
                    {
                        m.MemberInfo.SetValue(obj, ControllerHelper.ChangeType(s, m.MemberType));
                    }
                }
            }
            if (obj is DbObjectSmartUpdate)
            {
                (obj as DbObjectSmartUpdate).Save();
            }
            else
            {
                DbEntry.Save(obj);
            }
            Flash.Notice = string.Format("{0} was successfully created", ControllerName);
            return(UrlTo().Action("list"));
        }
Exemplo n.º 2
0
        public virtual string Update(long n)
        {
            var ctx = ModelContext.GetInstance(typeof(T));
            var obj = DbEntry.GetObject <T>(n);

            foreach (MemberHandler m in ctx.Info.Members)
            {
                if (m.Is.RelationField)
                {
                    continue;
                }
                if (!m.Is.AutoSavedValue && !m.Is.DbGenerate)
                {
                    string s = HttpContextHandler.Instance[ControllerName + "[" + m.Name.ToLower() + "]"];
                    if (m.Is.LazyLoad)
                    {
                        object       ll = m.MemberInfo.GetValue(obj);
                        PropertyInfo pi = m.MemberInfo.MemberType.GetProperty("Value");
                        object       v  = ControllerHelper.ChangeType(s, m.MemberType.GetGenericArguments()[0]);
                        pi.SetValue(ll, v, null);
                        // TODO: get rid of use such method.
                        ClassHelper.CallFunction(obj, "m_ColumnUpdated", m.Name);
                    }
                    else
                    {
                        m.MemberInfo.SetValue(obj, ControllerHelper.ChangeType(s, m.MemberType));
                    }
                }
            }
            if (obj is DbObjectSmartUpdate)
            {
                (obj as DbObjectSmartUpdate).Save();
            }
            else
            {
                DbEntry.Save(obj);
            }
            Flash.Notice = string.Format("{0} was successfully updated", ControllerName);
            return(UrlTo().Action("show").Parameters(n));
        }