//public int InsertNodeRow(NodeData nodeData) //{ // SqlProcedure cmd = null; // SqlDataReader reader = null; // var result = 0; // try // { // cmd = new SqlProcedure { CommandText = "proc_Node_Insert" }; // cmd.Parameters.Add("@NodeTypeId", SqlDbType.Int).Value = nodeData.NodeTypeId; // cmd.Parameters.Add("@ContentListTypeId", SqlDbType.Int).Value = (nodeData.ContentListTypeId != 0) ? (object)nodeData.ContentListTypeId : DBNull.Value; // cmd.Parameters.Add("@ContentListId", SqlDbType.Int).Value = (nodeData.ContentListId != 0) ? (object)nodeData.ContentListId : DBNull.Value; // cmd.Parameters.Add("@IsDeleted", SqlDbType.TinyInt).Value = nodeData.IsDeleted ? 1 : 0; // cmd.Parameters.Add("@IsInherited", SqlDbType.TinyInt).Value = nodeData.IsInherited ? 1 : 0; // cmd.Parameters.Add("@ParentNodeId", SqlDbType.Int).Value = (nodeData.ParentId > 0) ? (object)nodeData.ParentId : DBNull.Value; // cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 450).Value = nodeData.Name; // cmd.Parameters.Add("@DisplayName", SqlDbType.NVarChar, 450).Value = (object)nodeData.DisplayName ?? DBNull.Value; // cmd.Parameters.Add("@Path", SqlDbType.NVarChar, 450).Value = nodeData.Path; // cmd.Parameters.Add("@Index", SqlDbType.Int).Value = nodeData.Index; // cmd.Parameters.Add("@Locked", SqlDbType.TinyInt).Value = nodeData.Locked ? 1 : 0; // cmd.Parameters.Add("@LockedById", SqlDbType.Int).Value = (nodeData.LockedById > 0) ? (object)nodeData.LockedById : DBNull.Value; // cmd.Parameters.Add("@ETag", SqlDbType.VarChar, 50).Value = nodeData.ETag ?? String.Empty; // cmd.Parameters.Add("@LockType", SqlDbType.Int).Value = nodeData.LockType; // cmd.Parameters.Add("@LockTimeout", SqlDbType.Int).Value = nodeData.LockTimeout; // cmd.Parameters.Add("@LockDate", SqlDbType.DateTime).Value = nodeData.LockDate; // cmd.Parameters.Add("@LockToken", SqlDbType.VarChar, 50).Value = nodeData.LockToken ?? String.Empty; // cmd.Parameters.Add("@LastLockUpdate", SqlDbType.DateTime).Value = nodeData.LastLockUpdate; // cmd.Parameters.Add("@CreationDate", SqlDbType.DateTime).Value = nodeData.NodeCreationDate; // cmd.Parameters.Add("@CreatedById", SqlDbType.Int).Value = nodeData.NodeCreatedById; // cmd.Parameters.Add("@ModificationDate", SqlDbType.DateTime).Value = nodeData.NodeModificationDate; // cmd.Parameters.Add("@ModifiedById", SqlDbType.Int).Value = nodeData.NodeModifiedById; // reader = cmd.ExecuteReader(); // while (reader.Read()) // { // // SELECT [NodeId], [Timestamp] FROM Nodes WHERE NodeId = @@IDENTITY // result = Convert.ToInt32(reader[0]); // nodeData.NodeTimestamp = SqlProvider.GetLongFromBytes((byte[])reader[1]); // } // } // catch (SqlException e) //rethrow // { // throw new DataException(e.Message, e); // } // finally // { // if (reader != null && !reader.IsClosed) // reader.Close(); // cmd.Dispose(); // } // return result; //} public void UpdateNodeRow(NodeData nodeData) { SqlProcedure cmd = null; SqlDataReader reader = null; try { cmd = new SqlProcedure { CommandText = "proc_Node_Update" }; cmd.Parameters.Add("@NodeId", SqlDbType.Int).Value = nodeData.Id; cmd.Parameters.Add("@NodeTypeId", SqlDbType.Int).Value = nodeData.NodeTypeId; cmd.Parameters.Add("@ContentListTypeId", SqlDbType.Int).Value = (nodeData.ContentListTypeId != 0) ? (object)nodeData.ContentListTypeId : DBNull.Value; cmd.Parameters.Add("@ContentListId", SqlDbType.Int).Value = (nodeData.ContentListId != 0) ? (object)nodeData.ContentListId : DBNull.Value; cmd.Parameters.Add("@IsDeleted", SqlDbType.TinyInt).Value = nodeData.IsDeleted ? 1 : 0; cmd.Parameters.Add("@IsInherited", SqlDbType.TinyInt).Value = nodeData.IsInherited ? 1 : 0; cmd.Parameters.Add("@ParentNodeId", SqlDbType.Int).Value = (nodeData.ParentId > 0) ? (object)nodeData.ParentId : DBNull.Value; cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 450).Value = nodeData.Name; cmd.Parameters.Add("@DisplayName", SqlDbType.NVarChar, 450).Value = (object)nodeData.DisplayName ?? DBNull.Value; cmd.Parameters.Add("@Path", SqlDbType.NVarChar, 450).Value = nodeData.Path; cmd.Parameters.Add("@Index", SqlDbType.Int).Value = nodeData.Index; cmd.Parameters.Add("@Locked", SqlDbType.TinyInt).Value = nodeData.Locked ? 1 : 0; cmd.Parameters.Add("@LockedById", SqlDbType.Int).Value = (nodeData.LockedById > 0) ? (object)nodeData.LockedById : DBNull.Value; cmd.Parameters.Add("@ETag", SqlDbType.VarChar, 50).Value = nodeData.ETag ?? String.Empty; cmd.Parameters.Add("@LockType", SqlDbType.Int).Value = nodeData.LockType; cmd.Parameters.Add("@LockTimeout", SqlDbType.Int).Value = nodeData.LockTimeout; cmd.Parameters.Add("@LockDate", SqlDbType.DateTime).Value = nodeData.LockDate; cmd.Parameters.Add("@LockToken", SqlDbType.VarChar, 50).Value = nodeData.LockToken ?? String.Empty; cmd.Parameters.Add("@LastLockUpdate", SqlDbType.DateTime).Value = nodeData.LastLockUpdate; cmd.Parameters.Add("@CreationDate", SqlDbType.DateTime).Value = nodeData.NodeCreationDate; cmd.Parameters.Add("@CreatedById", SqlDbType.Int).Value = nodeData.NodeCreatedById; cmd.Parameters.Add("@ModificationDate", SqlDbType.DateTime).Value = nodeData.NodeModificationDate; cmd.Parameters.Add("@ModifiedById", SqlDbType.Int).Value = nodeData.NodeModifiedById; cmd.Parameters.Add("@NodeTimestamp", SqlDbType.Timestamp).Value = SqlProvider.GetBytesFromLong(nodeData.NodeTimestamp); reader = cmd.ExecuteReader(); while (reader.Read()) { // SELECT [Timestamp] FROM Nodes WHERE NodeId = @NodeId nodeData.NodeTimestamp = SqlProvider.GetLongFromBytes((byte[])reader[0]); } } catch (SqlException sex) //rethrow { if (sex.Message.StartsWith("Node is out of date")) { throw new NodeIsOutOfDateException(nodeData.Id, nodeData.Path, nodeData.VersionId, nodeData.Version, sex, nodeData.NodeTimestamp); } throw new DataException(sex.Message, sex); } finally { if (reader != null && !reader.IsClosed) { reader.Close(); } cmd.Dispose(); } }