Пример #1
0
        public virtual T Create <T>(T model) where T : DbObject, new()
        {
            IDbObjectInfo <T> dbObjectInfo = this.DbRuleContext.GetDbObjectInfo <T>();

            model = dbObjectInfo.CreateClone(this, model);
            dbObjectInfo.CheckDuplicate(this, model, new string[0]);
            dbObjectInfo.SetModifyDatetime(model);
            this.Validate <T>(model, DbOperation.Create);
            this.DbObjectOperator.Insert(model);
            return(model);
        }
Пример #2
0
        public virtual T Update <T>(T model) where T : DbObject, new()
        {
            IDbObjectInfo <T> dbObjectInfo = this.DbRuleContext.GetDbObjectInfo <T>();

            dbObjectInfo.CheckDuplicate(this, model, new string[0]);
            T local = dbObjectInfo.UpdateClone(this, model, new string[0]);

            this.Validate <T>(local, DbOperation.None | DbOperation.Update);
            dbObjectInfo.SetModifyDatetime(local);
            this.DbObjectOperator.Update(local);
            return(local);
        }
Пример #3
0
        private TableInfo AssertTableInfo(IDbObjectInfo objectInfo)
        {
            if (objectInfo == null)
            {
                throw new ArgumentNullException(nameof(objectInfo));
            }
            if (!(objectInfo is TableInfo))
            {
                throw new ArgumentException("The specified object info is invalid.");
            }

            return((TableInfo)objectInfo);
        }
Пример #4
0
        public void Delete <T>(string id) where T : DbObject, new()
        {
            IDbObjectInfo <T>   dbObjectInfo          = this.DbRuleContext.GetDbObjectInfo <T>();
            DynamicPropertyInfo pkDynamicPropertyInfo = DbObjectTools.GetPkDynamicPropertyInfo(DbObjectTools.GetDbObjectInfo(typeof(T)), true);
            T model = this.QueryObject <T>(pkDynamicPropertyInfo.DataFieldName, id, true);

            dbObjectInfo.SetModifyDatetime(model);
            if (dbObjectInfo.IsLogicalDelete)
            {
                dbObjectInfo.SetLogicalDelete(model);
                this.DbObjectOperator.Update(model);
            }
            else
            {
                this.DbObjectOperator.Delete(model);
            }
        }
Пример #5
0
        public void Delete <T>(T model) where T : DbObject, new()
        {
            IDbObjectInfo <T> dbObjectInfo = this.DbRuleContext.GetDbObjectInfo <T>();

            if (dbObjectInfo.IsLogicalDelete)
            {
                T local = dbObjectInfo.RemoveClone(this, model);
                if (local != null)
                {
                    dbObjectInfo.SetModifyDatetime(local);
                    this.Validate <T>(model, DbOperation.None | DbOperation.Update);
                    this.DbObjectOperator.Update(local);
                }
            }
            else
            {
                dbObjectInfo.SetModifyDatetime(model);
                this.Validate <T>(model, DbOperation.Delete);
                this.DbObjectOperator.Delete(model);
            }
        }
Пример #6
0
 Task <bool> IDbObjectManager.AlterObjectAsync(IDbObjectInfo objInfo)
 {
     throw new NotSupportedException();
 }
Пример #7
0
 Task IDbObjectManager.CreateObjectAsync(IDbObjectInfo objInfo)
 {
     CreateVariable((VariableInfo)objInfo);
     return(Task.CompletedTask);
 }
Пример #8
0
 Task <bool> IDbObjectManager.AlterObjectAsync(IDbObjectInfo objInfo)
 {
     return(AlterTableAsync(AssertTableInfo(objInfo)));
 }
Пример #9
0
 Task IDbObjectManager.CreateObjectAsync(IDbObjectInfo objInfo)
 {
     CreateTable(AssertTableInfo(objInfo));
     return(Task.CompletedTask);
 }