362. Using interception for transactions

בהמשך לפעמים הקודמות,

נראה עוד שימוש בInterception והוא שימוש בשביל טרנזקציות:

נניח שיש לנו פונקציה שעובדת בטרנזקציה: כלומר בתחילה אליה אנחנו יוצרים טרנזקציה, ובסוף אנחנו מבצעים Commit במידה והצלחנו, ואחרת אנחנו עושים Rollback.

נוכל לכתוב Interceptor שמשתמש בטרנקציות. זה יראה משהו בסגנון הזה.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class TransactionInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Transaction transaction = new Transaction();
try
{
invocation.Proceed();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback(ex);
throw;
}
}
}

שימוש בטרנקציות יכול להתאים לאזורים בהם אנחנו מעוניינים לשלוח את הפעולה רק אחרי שסיימנו לבצע את הפעולות הנלוות,

למשל בהכנסה לDatabase לא נרצה לעשות Commit לפעולה לפני שכתבנו את כל הFKים.

המשך יום טרנזקציוני טוב.

שתף