MMOJr.ESI.Standard 8.2.20

There is a newer version of this package available.
See the version list below for details.
dotnet add package MMOJr.ESI.Standard --version 8.2.20
NuGet\Install-Package MMOJr.ESI.Standard -Version 8.2.20
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MMOJr.ESI.Standard" Version="8.2.20" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MMOJr.ESI.Standard --version 8.2.20
#r "nuget: MMOJr.ESI.Standard, 8.2.20"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MMOJr.ESI.Standard as a Cake Addin
#addin nuget:?package=MMOJr.ESI.Standard&version=8.2.20

// Install MMOJr.ESI.Standard as a Cake Tool
#tool nuget:?package=MMOJr.ESI.Standard&version=8.2.20

E S I - EXECUTE SCOPE INSTANCES

ESI is a new and simple way of Object Oriented Programming.
Even for those who still don't know the Concepts and Principles of Object Orientation, they will learn easily.
With a very simple structure and easy application, ESI meets the 5 Principles S.O.L.I.D..
ESI will change your way of thinking Programming.

5 Principles S. O. L. I. D.

S — Single Responsiblity Principle
O — Open-Closed Principle
L — Liskov Substitution Principle
I — Interface Segregation Principle
D — Dependency Inversion Principle

* Object Oriented Program
* Clean Code
* Program Without IFs
* Fully Decoupled Program
* Fully Structured Program

ESI is Composed of 3 Basic Structures:

* ESIControllerBase<TData> - must implement the Method protected abstract void OnExecute(IESIConfigurationController configuration);
* ESIBusinessBase<TData> - must implement the Method protected abstract void OnExecute(IESIConfigurationBusiness configuration);
* ESIRepositoryBase<TData> - must implement the Method protected abstract void OnExecute(IESIConfigurationRepository configuration);

For more information about ESI, visit the website: mmojrti.com or contact us by email: support@mmojrti.com.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
9.0.21 347 1/16/2023
9.0.20 325 1/16/2023
8.2.21 332 12/13/2022
8.2.20 307 12/13/2022
8.1.21 344 11/21/2022
8.1.20 320 11/21/2022
7.0.1 455 5/30/2022
6.0.1 467 3/13/2022
6.0.0 423 3/13/2022
5.0.1 367 8/16/2021
5.0.0 329 8/16/2021
4.2.1 400 5/6/2021
4.1.1 330 5/4/2021
3.1.1 368 4/7/2021
2.1.1 373 4/5/2021
1.0.0 368 3/30/2021

Changes Version 8.x.x:

1. New Async Methods will be included on ESIControllerBase<TData>, ESIBusinessBase<TData> and ESIRepositoryBase<TData>:
 * ExecuteAsync()
  Method that performs the calls Async.
 * ExecuteAsync(millisecondsDelay)
  Method that performs the calls Async with time Delay Cancel.

2. When a System Exception occurs, EndType.Execution and EndLoop.Break will no longer be set by default.
   The Execution will continue until it is canceled (Asynchronous Process) or Terminated by the user, according to Item 4 Below.

3. The ESIEndType and ESIEndLoop properties will no longer be available in OnSuccess, OnFailure and OnException Events.
   The Management of these Properties they are in the New Method of ESIControllerBase<TData>, according to Item 4 Below.

4. New Methods will be included in the ESIControllerBase<Data> in the LoadScope Method:
 * EndTypeScopeOnException()
  When an Exception occurs (The List Exception is filled), the EndType.Scope will be set.
 * EndTypeExecutionOnException()
  When an Exception occurs (The List Exception is filled), the EndType.Execution will be set.
 * EndLoopContinueOnException()
  When an Exception occurs (The List Exception is filled) and it is inside a Loop, the EndLoop.Continue will be set.
 * EndLoopBreakOnException()
  When an Exception occurs (The List Exception is filled) and it is inside a Loop, the EndLoop.Break will be set.
 * EndTypeScopeOnSuccess<TBusiness>()
  When an Success = true on TBusiness, the EndType.Scope will be set.
 * EndTypeExecutionOnSuccess<TBusiness>()
  When an Success = true on TBusiness, the EndType.Execute will be set.
 * EndLoopContinueOnSuccess<TBusiness>()
  When an Success = true on TBusiness and it is inside a Loop, the EndLoop.Continue will be set.
 * EndLoopBreakOnSuccess<TBusiness>()
  When an Success = true on TBusiness and it is inside a Loop, the EndLoop.Break will be set.
 * EndTypeScopeOnFailure<TBusiness>()
  When an Success = false on TBusiness, the EndType.Scope will be set.
 * EndTypeExecutionOnFailure<TBusiness>()
  When an Success = false on TBusiness, the EndType.Execution will be set.
 * EndLoopContinueOnFailure<TBusiness>()
  When an Success = false on TBusiness and it is inside a Loop, the EndLoop.Continue will be set.
 * EndLoopBreakOnFailure<TBusiness>()
  When an Success = false on TBusiness and it is inside a Loop, the EndLoop.Break will be set.
 * EndTypeScopeForced()
  The EndType.Scope will be set.
 * EndTypeExecutionForced()
  The EndType.Execution will be set.
 * EndLoopContinueForced()
  The EndLoop.Continue will be set.
 * EndLoopBreakForced()
  The EndLoop.Break will be set.
 * EndTypeScopeOnSuccess<TBusiness, TDataExtern>(TDataExtern)
  When an Success = true on TBusiness, the EndType.Scope will be set.
 * EndTypeExecutionOnSuccess<TBusiness, TDataExtern>(TDataExtern)
  When an Success = true on TBusiness, the EndType.Execute will be set.
 * EndLoopContinueOnSuccess<TBusiness, TDataExtern>(TDataExtern)
  When an Success = true on TBusiness and it is inside a Loop, the EndLoop.Continue will be set.
 * EndLoopBreakOnSuccess<TBusiness, TDataExtern>(TDataExtern)
  When an Success = true on TBusiness and it is inside a Loop, the EndLoop.Break will be set.
 * EndTypeScopeOnFailure<TBusiness, TDataExtern>(TDataExtern)
  When an Success = false on TBusiness, the EndType.Scope will be set.
 * EndTypeExecutionOnFailure<TBusiness, TDataExtern>(TDataExtern)
  When an Success = false on TBusiness, the EndType.Execution will be set.
 * EndLoopContinueOnFailure<TBusiness, TDataExtern>(TDataExtern)
  When an Success = false on TBusiness and it is inside a Loop, the EndLoop.Continue will be set.
 * EndLoopBreakOnFailure<TBusiness, TDataExtern>(TDataExtern)
  When an Success = false on TBusiness and it is inside a Loop, the EndLoop.Break will be set.

 * ClearListException()
  Clear the ListException and 'Backup' the Exceptions.
 * UpdateListException()
  Returns the 'Backup' of Exceptions for ListException.

5. New Methods will be included in the ESIConfigurationSuccess and ESIConfigurationFailure on Events OnSuccess abd OnFailure:
 * AddNewException(string message)
  Add a new Exception in ListException, with a Message.
 * AddNewException(string message, object keyData, object valueData)
  Add a new Exception in ListException, with a Message and Key Pair Values Data.
 * AddNewException(string message, string source)
  Add a new Exception in ListException, with a Message and Source.
 * AddNewException(string message, string source, object keyData, object valueData)
  Add a new Exception in ListException, with a Message, Source and Key Pair Values Data.

6. New Methods will be included in the ESIConfigurationException on Event OnException:
 * ThrowNewException(string message)
  Throws a new Exception, with a Message and Adds the Original Exception as an InnerException.
 * ThrowNewException(string message, object keyData, object valueData)
  Throws a new Exception, with a Message, Key Pair Values Data and Adds the Original Exception as an InnerException.
 * ThrowNewException(string message, string source)
  Throws a new Exception, with a Message, Source and Adds the Original Exception as an InnerException.
 * ThrowNewException(string message, string source, object keyData, object valueData)
  Throws a new Exception, with a Message, Source, Key Pair Values Data and Adds the Original Exception as an InnerException.

7. The DbConnection property will no longer be available in OnExecute Event of IESIConfigurationRepository<TData>.
   In this Release, ESI Implement Multiple Connections of System.Data.IDbConnection and System.Data.IDbTransaction.
   For this, create an ID for each new Connection.

8. New Methods will be included in the IESIConfigurationRepository<TData>:
 * AddConnection(string idConnection, IDbConnection dbConnection)
  Add new the SQL Data Connection (System.Data.IDbConnection) in ESIRepositoryBase.
 * GetConnection(string idConnection)
  Get the SQL Data Connection (System.Data.IDbConnection) passed to ESIRepositoryBase.
 * GetTransaction(string idConnection)
  Get the SQL Data Transaction Local (System.Data.IDbTransaction) passed to ESIRepositoryBase with Attribute ESITransactionLocal (Item 9).
 * RemoveConnection(string idConnection)
  Remove the SQL Data Connection (System.Data.IDbConnection) in ESIRepositoryBase.

9. New Attribute ESITransactionLocal:
 * Used for local, non-distributed transactions linked to DbConnection for each IDConnection.

 * ESITransactionLocalAttribute(string idConnection)
  The idConnection parameter must be passed to Identify the Connection that initiates the Local Transaction.
  Prepare Instance Execution for Begin Local Transaction with default System.Data.IsolationLevel. IDbConnection.BeginTransaction()
  If there is no Exception during Instance Execution (ListException.Count = 0), Commit the Transaction, otherwise, Rollback the Transaction.
  Remove Connection default is true. Dispose and Remove the Connection and Transaction to the List Connections, after Instance Execution.

 * ESITransactionLocalAttribute(string idConnection, bool removeConnection)
  The idConnection parameter must be passed to Identify the Connection that initiates the Local Transaction.
  The removeConnection parameter if true, Dispose and Remove the Connection and Transaction to the List Connections, after Instance Execution.
  Prepare Instance Execution for Begin Local Transaction with default System.Data.IsolationLevel. IDbConnection.BeginTransaction()
  If there is no Exception during Instance Execution (ListException.Count = 0), Commit the Transaction, otherwise, Rollback the Transaction.

 * ESITransactionLocalAttribute(string idConnection, System.Data.IsolationLevel isolationLevel)
  The idConnection parameter must be passed to Identify the Connection that initiates the Local Transaction.
  Prepare Instance Execution for Begin Local Transaction with System.Data.IsolationLevel set. IDbConnection.BeginTransaction(System.Data.IsolationLevel)
  If there is no Exception during Instance Execution (ListException.Count = 0), Commit the Transaction, otherwise, Rollback the Transaction.
  Remove Connection default is true. Dispose and Remove the Connection and Transaction to the List Connections, after Instance Execution.

 * ESITransactionLocalAttribute(string idConnection, System.Data.IsolationLevel isolationLevel, bool removeConnection)
  The idConnection parameter must be passed to Identify the Connection that initiates the Local Transaction.
  The removeConnection parameter if true, Dispose and Remove the Connection and Transaction to the List Connections, after Instance Execution.
  Prepare Instance Execution for Begin Local Transaction with System.Data.IsolationLevel set. IDbConnection.BeginTransaction(System.Data.IsolationLevel)
  If there is no Exception during Instance Execution (ListException.Count = 0), Commit the Transaction, otherwise, Rollback the Transaction.

10. Correction of Scope Finalization for Method in Version 8.1.x:
 * EndTypeScopeOnException()

For more information about ESI, visit the website: mmojrti.com or contact us by email: support@mmojrti.com.