I'm the only user using the system and this code throws a concurrency exception all I'm trying to do is update the status and add the user who is adopting the task
OptimisticConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=472540 for information on understanding and handling optimistic concurrency exceptions.
namespace GoldMine.View.Notification.Home.Process {
using PageInstruction = GraphiteGTC.Core.View.Element.Model.PageInstruction;
using Notification = GoldMine.Model.Notification;
using User = GoldMine.Model.User;
using NotificationApprovalStatus = GoldMine.Model.NotificationApprovalStatus;
using ButtonTypeOption = GoldMine.Model.ButtonTypeOption;
/// <summary>
///
/// Class housing the logic for OnClickAdoptApproveTaskButtonProcess
///
/// </summary>
public class OnClickAdoptApproveTaskButtonProcess : GoldMineViewProcess {
/// <summary>
///
/// View process inputs
///
/// </summary>
public new OnClickAdoptApproveTaskButtonProcessInputs Inputs {
get { return ( OnClickAdoptApproveTaskButtonProcessInputs )base.Inputs; }
set { base.Inputs = value; }
}
/// <summary>
///
/// View process outputs
///
/// </summary>
public new OnClickAdoptApproveTaskButtonProcessOutputs Outputs {
get { return ( OnClickAdoptApproveTaskButtonProcessOutputs )base.Outputs; }
set { base.Outputs = value; }
}
/// <summary>
///
/// UI outputs
///
/// </summary>
public OnClickAdoptApproveTaskButtonProcessUiOutputs UiOutputs {
get { return new OnClickAdoptApproveTaskButtonProcessUiOutputs( Outputs ); }
}
/// <summary>
///
/// Default parameter-less constructor
///
/// </summary>
public OnClickAdoptApproveTaskButtonProcess() {
Name = "GoldMine.View.Notification.Home.Process.OnClickAdoptApproveTaskButtonProcess";
Inputs = new OnClickAdoptApproveTaskButtonProcessInputs();
Outputs = new OnClickAdoptApproveTaskButtonProcessOutputs();
base.Outputs = Outputs;
base.Inputs = Inputs;
DelayedPropertyAssignments = new List<DelayedPropertyAssignment>();
}
/// <summary>
///
/// Entry point for event processing
///
/// </summary>
protected override GraphiteGTCProcess ExecuteProcess( GTCEventRegistration executingEventRegistration ) {
return base.ExecuteProcess( Inputs.EventRegistration );
}
/// <summary>
///
/// Entry point for Business Logic Processing
///
/// </summary>
protected override GraphiteGTCProcess ExecuteForwardProcessing() {
try {
Outputs = new OnClickAdoptApproveTaskButtonProcessOutputs();
Outputs.SessionToken = UiStringConverter.CreateSessionToken( Inputs.CurrentUser );
Debugging.DebugWorker.Current.BeginProcess();
Debugging.DebugWorker.Current.SetVariableValue( "ButtonType", Inputs.ButtonType );
Debugging.DebugWorker.Current.SetVariableValue( "CurrentNotification", Inputs.CurrentNotification );
Debugging.DebugWorker.Current.SetVariableValue( "PageInstructions", Outputs.PageInstructions );
Debugging.DebugWorker.Current.SetVariableValue( "CurrentUser", Inputs.CurrentUser );
Debugging.DebugWorker.Current.BeginInstruction( "b60bbb93-3a06-4a57-ace3-6024f91c94a0", "092c84bf-423e-454b-8efa-00749bc691ef" );
// ShapeComment:[Create List of Page Instructions][b60bbb93-3a06-4a57-ace3-6024f91c94a0][4bf395e3-e0a1-4304-b987-dcdae594a524]
Debugging.DebugWorker.Current.BeginInstruction( "b60bbb93-3a06-4a57-ace3-6024f91c94a0", "4bf395e3-e0a1-4304-b987-dcdae594a524" );
Outputs.PageInstructions = new List<PageInstruction>();
Debugging.DebugWorker.Current.SetVariableValue( "PageInstructions", Outputs.PageInstructions );
// ShapeComment:[Get Receiver][b60bbb93-3a06-4a57-ace3-6024f91c94a0][6b9c89cc-79c7-4957-8164-9a0c25da7652]
Debugging.DebugWorker.Current.BeginInstruction( "b60bbb93-3a06-4a57-ace3-6024f91c94a0", "6b9c89cc-79c7-4957-8164-9a0c25da7652" );
#region Execute FindReceiverFromNotification Process
var notificationFindReceiverFromNotificationProcess = new Notification( true ).FindReceiverFromNotificationProcess;
notificationFindReceiverFromNotificationProcess.Inputs.EventRegistration = Inputs.EventRegistration;
notificationFindReceiverFromNotificationProcess.Inputs.CurreuntUser = Inputs.CurrentUser;
notificationFindReceiverFromNotificationProcess.Inputs.Notification = Inputs.CurrentNotification;
notificationFindReceiverFromNotificationProcess.OverriddenValidations = OverriddenValidations;
try {
notificationFindReceiverFromNotificationProcess.StartProcessing();
Outputs.Validations.AddRange( notificationFindReceiverFromNotificationProcess.Outputs.Validations );
}
catch ( ValidationResultException validationResultException ) {
Outputs.Validations.AddRange( validationResultException.Validations );
if ( validationResultException.ContainsError() ) {
throw new ValidationResultException( string.Format( "Processing {0} resulted in an error", Name ), Outputs.Validations );
}
}
#endregion
var NotificationFindReceiverFromNotificationResult = notificationFindReceiverFromNotificationProcess;
Debugging.DebugWorker.Current.SetVariableValue( "NotificationFindReceiverFromNotificationResult", NotificationFindReceiverFromNotificationResult );
// ShapeComment:[Assign Notification as Read][b60bbb93-3a06-4a57-ace3-6024f91c94a0][324e353c-cdd6-488e-8c9c-3420051a06f5]
Debugging.DebugWorker.Current.BeginInstruction( "b60bbb93-3a06-4a57-ace3-6024f91c94a0", "324e353c-cdd6-488e-8c9c-3420051a06f5" );
Inputs.CurrentNotification.AdoptedBy = Inputs.CurrentUser;
Inputs.CurrentNotification.ApprovalStatus = NotificationApprovalStatus.Approved;
// ShapeComment:[Save Notification][b60bbb93-3a06-4a57-ace3-6024f91c94a0][c407dd77-b074-4c26-ac9b-557d73fec312]
Debugging.DebugWorker.Current.BeginInstruction( "b60bbb93-3a06-4a57-ace3-6024f91c94a0", "c407dd77-b074-4c26-ac9b-557d73fec312" );
GoldMine.View.Notification.Home.Process.SaveNotificationProcess SaveNotificationProcessResult = null;
try {
SaveNotificationProcessResult = ( GoldMine.View.Notification.Home.Process.SaveNotificationProcess ) EventProcess.ExecuteUnregisteredViewEvent( "GoldMine.View.Notification.Home.Process.SaveNotificationProcess", Inputs.CurrentUser, new NameValuePairInputCollection {
{ "Notification", Inputs.CurrentNotification }
} );
Outputs.Validations.AddRange( SaveNotificationProcessResult.Outputs.Validations );
}
catch ( ValidationResultException validationResultException ) {
Outputs.Validations.AddRange( validationResultException.Validations );
if ( validationResultException.ContainsError() ) {
throw new ValidationResultException( string.Format( "Processing {0} resulted in an error", Name ), Outputs.Validations );
}
}
var HomeSaveNotificationResult = SaveNotificationProcessResult;
Debugging.DebugWorker.Current.SetVariableValue( "HomeSaveNotificationResult", HomeSaveNotificationResult );
Debugging.DebugWorker.Current.BeginInstruction( "b60bbb93-3a06-4a57-ace3-6024f91c94a0", "85d667f2-7ed7-4d91-9dff-1c25687fa197" );
Debugging.DebugWorker.Current.EndProcess();
Outputs.SessionToken = UiStringConverter.CreateSessionToken( Inputs.CurrentUser );
return this;
}
*catch ( ConcurrencyException ) {
throw;*
}
throwstatement, but look up in the call stack to find where it is actually being thrown - or just remove that wholetry/catchblock (if you are just catching an exception to rethrow it, then don't catch it). - Gabriel LuciCurrentNotification? Is it a class in your project? - Gabriel Luci