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")); }
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)); }