//***************************************************************************// // Legenerálja a DA-hoz a zárolási műveletet. // //***************************************************************************// template GenerateNoWaitForLock(ENTITYNAME) #region No wait for lock private string GetNoWaitForLockCommandText() { string result = null; switch (SDAServer.Instance.Configuration.DataBaseType) { case DataBaseType.MSSQL: { result = "select SERIAL from [ConvertNameToSQLTableName([ENTITYNAME])] with(updlock) where ID = :[ConvertNameToCommandParameterName("ID")] {0} "; break; } case DataBaseType.ORACLE: case DataBaseType.NATIVEORACLE: { result = "select SERIAL from [ConvertNameToSQLTableName([ENTITYNAME])] where ID = :[ConvertNameToCommandParameterName("ID")] {0} for update nowait "; break; } default: { throw new NotSupportedException(SDAServer.Instance.Configuration.DataBaseType.ToString()); } } result = String.Format(result, ""); return result; } public int NoWaitForLock([ENTITYNAME] entity) { //Console.WriteLine("*** NoWaitForLock 35"); using ([GetCSharpSQLCommandType()] command = DataAccessor.CreateCommand(this.GetNoWaitForLockCommandText())) { command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]).Value = entity.ID; int result = -1; using ([GetCSharpSQLDataReaderType()] reader = command.ExecuteReader()) { if (reader.Read()) { result = Convert.ToInt32(reader.GetValue(0)); if (reader.Read()) { throw new Kreta.Framework.DataIntegrityException("Egyediség megsértése: [ENTITYNAME]."); } } else { throw new Kreta.Framework.Exceptions.EntityNotFoundException("[ENTITYNAME]", entity.ID); } } return result; } } #endregion end template /* REFACTOR template GenerateNoWaitForLock(classname) #region No wait for lock [GenerateCommandGetterProperty("NoWaitForLock")] /// /// /// /// A műveletet elvégző SQL parancs. private [GetCSharpSQLCommandType()] [GenerateCommandCreatorName("NoWaitForLock")]() { [GetCSharpSQLCommandType()] result = new [GetCSharpSQLCommandType()](); result.CommandType = CommandType.Text; result.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]); switch (SDAServer.Instance.Configuration.DataBaseType) { case DataBaseType.MSSQL: { result.CommandText = "select SERIAL from [ConvertNameToSQLTableName([classname])] with(updlock) where ID = :[ConvertNameToCommandParameterName("ID")] "; break; } case DataBaseType.ORACLE: case DataBaseType.NATIVEORACLE: { result.CommandText = "select SERIAL from [ConvertNameToSQLTableName([classname])] where ID = :[ConvertNameToCommandParameterName("ID")] "; result.CommandText += " for update nowait"; break; } default: { throw new NotSupportedException(SDAServer.Instance.Configuration.DataBaseType.ToString()); } } return result; } /// /// /// public int NoWaitForLock([classname] entity) { [GetCSharpSQLDataReaderType()] reader = null; [GetCSharpSQLCommandType()] command = this.[ConvertNameToCommandName("NoWaitForLock")]; [GenerateCommandInit("command")] command.Parameters\["[ConvertNameToCommandParameterName("ID")]"\].Value = entity.ID; int result = -1; using (reader = command.ExecuteReader()) { if (reader.Read()) { result = Convert.ToInt32(reader.GetValue(0)); System.Diagnostics.Debug.Assert(reader.Read() == false, "Több ilyen entitást találtam az adatbázisban..."); // XXX } else { throw new Kreta.Framework.Exceptions.EntityNotFoundException("[classname]", entity.ID); } } return result; } #endregion end template */