﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Application Framework - V1 » Business Objects and Data Access (How do I?)  » Using transaction and show broken rules</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Tue, 09 Jun 2026 17:45:26 GMT</lastBuildDate><ttl>20</ttl><item><title>Using transaction and show broken rules</title><link>http://forum.strataframe.net/FindPost7114.aspx</link><description>Hi,&lt;P&gt;I&amp;nbsp;have code to update some tables (not visible on screen) upon Form.AfterSave() event fired using transaction as shown below. &lt;/P&gt;&lt;P&gt;1. Is it the "right way"?&lt;/P&gt;&lt;P&gt;2. I want show broken rules if failed. How should I show them? Any advice?&lt;/P&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;[codesnippet]public SaveUndoResult SaveToTransfer()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; SaveUndoResult loReturn = SaveUndoResult.Success;&lt;BR&gt;&amp;nbsp; try&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PushDataToTransfer();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BusinessLayer.TransactionBegin("", IsolationLevel.ReadCommitted);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (loReturn == SaveUndoResult.Success)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loReturn = _TransfersBO.Save(true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (loReturn == SaveUndoResult.Success)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _TransferDetailsBO.Save(true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (loReturn == SaveUndoResult.Success)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PInvoiceTransferBO.Save(true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp; catch (DataLayerSavingException ex)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw ex;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp; catch (Exception ex)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new BusinessLayerException("An error occurred while saving the data to the server.", ex);&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; finally&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (loReturn == SaveUndoResult.Success)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BusinessLayer.TransactionCommit("");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BusinessLayer.TransactionRollback("");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;return loReturn;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;}[/codesnippet]&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;</description><pubDate>Thu, 22 Feb 2007 09:28:21 GMT</pubDate><dc:creator>Chan</dc:creator></item><item><title>RE: Using transaction and show broken rules</title><link>http://forum.strataframe.net/FindPost7119.aspx</link><description>Yes, that is the correct way to do it.&amp;nbsp; The only thing I would change is if you're planning on threading this or running this on a web application (any time you might have this code running more than once at the same time), you'll want to specify a transaction key for the Begin, Commit, Rollback, and saves.&amp;nbsp; Maybe something like Guid.NewGuid().ToString()&amp;nbsp;to make it random (but save it off so you can pass the same value to all of the method calls that are part of the same transaction).&amp;nbsp; But yeah, what you have looks good.&amp;nbsp; &lt;/P&gt;&lt;P&gt;After each of the Save() calls, the BrokenRules property on the business object will have all of the broken rules.&amp;nbsp; You can enumerate through that collection and create a flat list of the broken rules for display to the user.</description><pubDate>Thu, 22 Feb 2007 09:28:21 GMT</pubDate><dc:creator>StrataFrame Team</dc:creator></item></channel></rss>