Beispiel #1
0
        public override void OnInserted(DomainObject obj, DataTable table)
        {
            DataContext.Current.OpenLock(QueryLevel.Single);
            var id     = (obj as IEntityObject).GetIdentity();
            var parent = obj.GetValue <IEntityObject>(this.ParentProperty);

            if (SqlContext.GetDbType() == DatabaseType.SQLServer)
            {
                if (parent.IsEmpty())
                {
                    //自身为根
                    DataPortal.Direct(obj.ObjectType, (conn) =>
                    {
                        var sql = string.Format("update dbo.{0} set lft=@lft,rgt=@rgt,rootId=@id where id=@id;", table.Name);
                        conn.Execute(sql, new { lft = 0, rgt = 1, id });
                    });
                }
                else
                {
                    var parentId = parent.GetIdentity();
                    var sql      = _getUpdateLRForInsertSqlBySqlServer(table.Name);
                    //显示开启锁
                    DataPortal.Direct(obj.ObjectType, (conn) =>
                    {
                        conn.Execute(sql, new { id, parentId });
                    });
                }
                return;
            }

            throw new MapperNotImplementedException(obj.ObjectType, "insert");
        }
Beispiel #2
0
        public override void OnPreDelete(DomainObject obj, DataTable table)
        {
            var id = (obj as IEntityObject).GetIdentity();

            if (SqlContext.GetDbType() == DatabaseType.SQLServer)
            {
                var sql = _getUpdateLRForDeleteSqlBySqlServer(table.Name);
                DataPortal.Direct(obj.ObjectType, (conn) =>
                {
                    var result = conn.Execute(sql, new { id });
                });
                return;
            }

            throw new MapperNotImplementedException(obj.ObjectType, "delete");
        }