<?xml version="1.0" ?><rss version="2.0"> <channel>  <description>Rockford Lhotka's web site</description>  <title>Rockford Lhotka</title>  <link>http://www.lhotka.net</link>  <language>en-us</language>  <copyright>Copyright 2008, Rockford Lhotka</copyright>  <lastBuildDate>Sun, 27 Jul 2008 02:31:13 GMT</lastBuildDate>  <managingEditor>rocky@lhotka.net</managingEditor>  <webMaster>rocky@lhotka.net</webMaster>  <item>   <title>Contributors</title>   <guid>http://www.lhotka.net/article.aspx?id=bbe426f7-cd06-482f-bfa7-ec5640296562</guid>   <link>http://www.lhotka.net/article.aspx?id=bbe426f7-cd06-482f-bfa7-ec5640296562</link>   <pubDate>Wed, 23 Jul 2008 15:56:39 GMT</pubDate>   <description>&lt;TABLE cellSpacing=0 cellPadding=2 width=400 border=1 unselectable=&quot;on&quot;&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;&lt;STRONG&gt;Contributor&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;&lt;STRONG&gt;Area&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Keith Lawrence&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;CSLA .NET for Windows CE&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Aaron Erickson (Magenic)&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;LINQ integration&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Justin Chase (Magenic)&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;CSLA Light and CSLA .NET 3.6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Sergey Barskiy (Magenic)&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;CSLA Light and CSLA .NET 3.6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Chris Williams (Magenic)&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;CSLA Light and CSLA .NET 3.6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Grant Breems (Magenic)&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;CSLA Light and CSLA .NET 3.6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Miguel Castro&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;CslaActionExtender and BindingSourceHelper&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Mark Chesney&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;BindingSourceRefresh&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;Ricky Supit&lt;/TD&gt;
&lt;TD vAlign=top width=400&gt;Data portal performance enhancements&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;All contributors to CSLA .NET sign an agreement granting RDL Enterprises the right to use their contribution in any manner, and warranting that they have the right to make that grant. The contributions are then released, as part of CSLA .NET,&amp;nbsp;under the standard &lt;A href=&quot;/cslanet/license.aspx&quot;&gt;CSLA .NET license&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA .NET</category>  </item>  <item>   <title>What is CSLA Light?</title>   <guid>http://www.lhotka.net/article.aspx?id=10fb9ba4-f136-4453-b5af-ca83cdbf0612</guid>   <link>http://www.lhotka.net/article.aspx?id=10fb9ba4-f136-4453-b5af-ca83cdbf0612</link>   <pubDate>Wed, 23 Jul 2008 05:00:00 GMT</pubDate>   <description>&lt;P&gt;&lt;A href=&quot;/cslalight&quot;&gt;CSLA&amp;nbsp;Light&lt;/A&gt; is a software development framework that helps you build a powerful, maintainable business logic layer for Silverlight applications. It&amp;nbsp;a subset of CSLA .NET, one of the most widely used&amp;nbsp;software development frameworks for Microsoft .NET. &lt;A href=&quot;/cslanet/Info.aspx&quot;&gt;Click here&lt;/A&gt; for a brief overview of CSLA .NET. 
&lt;P&gt;CSLA&amp;nbsp;Light enables you to create an object-oriented business layer that abstracts and encapsulates your business logic and data. CSLA&amp;nbsp;Light simplifies and standardizes implementation of business logic, validation and authorization logic within your objects. The goal is to provide an easy and consistent coding pattern by which you can encapsulate all your business logic within your object-oriented business layer. The result is a business layer that supports development of rich, interactive Silverlight applications. 
&lt;P&gt;CSLA&amp;nbsp;Light&amp;nbsp;supports&amp;nbsp;3-tier&amp;nbsp;and 4-tier deployment models. When using a 3-tier model, your CSLA Light business objects can invoke remote services written in asmx, WCF, ADO.NET Data Services, RSS or other technologies. In a 4-tier model your CSLA Light objects interact with a server running CSLA .NET, which allows you to take full advantage of CSLA .NET when creating your server-side code. 
&lt;P&gt;For existing CSLA .NET users, it is important to realize that CSLA Light follows the same programming model. If you know CSLA .NET, you already know most of CSLA Light. In fact, over 80% of your CSLA .NET business object code will typically work in CSLA Light &lt;EM&gt;without change&lt;/EM&gt;. In many cases, only your data access code will be different. 
&lt;P&gt;CSLA stands for Component-based, Scalable Logical Architecture, and is the result of over 12 years worth of research and development. The&amp;nbsp;Silverlight implementation of CSLA was started in 2007, and CSLA Light was one of the first application development frameworks available for the Silverlight platform.&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA Light</category>  </item>  <item>   <title>CSLA .NET Feature Wish List</title>   <guid>http://www.lhotka.net/article.aspx?id=42066ed8-ea65-44a3-b7fd-035c9d8bfa36</guid>   <link>http://www.lhotka.net/article.aspx?id=42066ed8-ea65-44a3-b7fd-035c9d8bfa36</link>   <pubDate>Mon, 21 Jul 2008 15:49:31 GMT</pubDate>   <description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;This is a list of possible future CSLA .NET enhancements. I maintain this list to avoid losing ideas, but there's no guarantee that any of these items will make it into CSLA .NET. (&lt;FONT color=#008000&gt;Green items&lt;/FONT&gt; are implemented in the upcoming release, &lt;FONT color=#a52a2a&gt;Brown items&lt;/FONT&gt; will not happen, and will be removed from the wish list concurrent with the upcoming release.)&lt;/P&gt;
&lt;OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Alter all reflection code to use Reflection.Emit, dynamic methods and/or to cache results (efficiency improvements) 
&lt;OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;In DataMapper 
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;In UndoableBase&lt;/LI&gt;&lt;/OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Enhance DataMapper 
&lt;OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;To support datarow types 
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;To map from IDataReader to object and from object to IDataParameterCollection.
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;To only update values that are different. At least as an option, it should be able to read the current value, compare it to the new value and do the update only if necessary as per &lt;A href=&quot;http://forums.lhotka.net/forums/24835/ShowThread.aspx#24835&quot;&gt;this thread&lt;/A&gt;.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Enhance data portal 
&lt;OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Change data portal so it is possible to have it invoke the DataPortal_XYZ methods on a factory object rather than on the actual business object. The factory object should be dynamically loaded based on assembly/type name info provided by the criteria and/or business object. 
&lt;LI&gt;Add a LogicalExecutionLocation property as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/15031.aspx&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;Allow a DataPortal_Fetch() implementation to tell the data portal to return a null back to the caller rather than throwing an exception in the case that no data was found. This is Miguel's &quot;MarkEmpty()&quot; concept. 
&lt;LI&gt;Raise pre- and post-call static events on the server-side data portal as per &lt;A href=&quot;http://forums.lhotka.net/forums/20519/ShowThread.aspx&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;&lt;FONT color=#006400&gt;Add a generic overload to Delete() so it matches the other data portal methods.&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#000000&gt;Provide some scheme by which different objects (probably identified by a ResourceRequired attribute) can be routed to different data portal servers.&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Authorization 
&lt;OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;&lt;FONT color=#000000&gt;Add instance level object authorization methods as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/20777.aspx&quot;&gt;this thread&lt;/A&gt;.&lt;/FONT&gt; 
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Add a delegate scheme by which type-level authorization can be handled by a user-supplied method.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Validation 
&lt;OL&gt;
&lt;LI&gt;Cascade the friendly name through to brokenrules as per &lt;A href=&quot;http://forums.lhotka.net/forums/17062/ShowThread.aspx#17062&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;&lt;FONT color=#000000&gt;Add priority property to BrokenRule as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/20238.aspx&quot;&gt;this thread&lt;/A&gt;.&lt;/FONT&gt; 
&lt;LI&gt;Allow the developer to specify the description text for the RegEx rule (and maybe all common rules?) 
&lt;LI&gt;&lt;FONT color=#008000&gt;Fix potential data formatting bug in DecoratedRuleArgs as &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/23013.aspx&quot;&gt;&lt;FONT color=#008000&gt;per this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#008000&gt;.&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#000000&gt;Add an attribute that can be used to decorate rule methods to make them discoverable by external tools (like code generators).&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;&gt;Move the ISavable implementation to Core.BusinessBase, having it implement a protected virtual SaveObject() method. Then Save() in Csla.BusinessBase can delegate to that new method. 
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add a control to Csla.Web that knows how to render BrokenRulesCollection information into HTML. &lt;/DIV&gt;
&lt;LI&gt;Allow clearing (resetting) of the validation and authorization rules at per-instance and per-type levels. The possibility for abuse here is high, and the result would be abysmal performance - so I'm not sure this is a great idea - but as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/12276.aspx&quot;&gt;this thread&lt;/A&gt;, it would enable some testing scenarios. 
&lt;LI&gt;The BindingSourceRefresh control has issues if the original property value is null and is then changed to another value. Apparently the original null value somehow stops data binding from raising the BindingComplete event from the bindingsource. 
&lt;LI&gt;CslaDataSource 
&lt;OL&gt;
&lt;LI&gt;Change how CslaDataSource determines whether an object supports insert/update/delete as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/15313.aspx&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;Change the SelectObject (and other) event methods to conform to the protected virtual On___() scheme to make it easier for subclass authors to work with the control.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;&lt;FONT color=#006400&gt;Add a way for a subclass of ERLB to know when a child has changed as per &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/15878.aspx&quot;&gt;&lt;FONT color=#006400&gt;this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#006400&gt;. &lt;/FONT&gt;
&lt;LI&gt;Fix issues with CslaDataSource and telerik grid control as per &lt;A href=&quot;http://forums.lhotka.net/forums/17220/ShowThread.aspx#17220&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;Throw an exception in BusinessListBase.InsertItem() if the object being inserted is not a child (IsChild is false) as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/20108.aspx&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;Csla.Wpf.Authorizer double-checks some controls, especially nested controls like a combobox. It should not do this. 
&lt;LI&gt;Add overloads to the Get methods in SafeDataReader to accept a value to return in case the database value is null as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/22470.aspx&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;&lt;FONT color=#006400&gt;Fix threading issue with authorization rules discussed in &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/22508.aspx&quot;&gt;&lt;FONT color=#006400&gt;this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#006400&gt;. &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT color=#a52a2a&gt;Fix issue with re-adding a deleted item in a BLB as per &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/22695.aspx&quot;&gt;&lt;FONT color=#a52a2a&gt;this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#a52a2a&gt;. &lt;/FONT&gt;
&lt;LI&gt;Add a context/connection manager for ADO.NET EF as &lt;A href=&quot;http://forums.lhotka.net/forums/thread/23025.aspx&quot;&gt;per this thread&lt;/A&gt;. 
&lt;LI&gt;&lt;FONT color=#006400&gt;FieldDataManager should have a method to expose whether a field is dirty or not as &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/23015.aspx&quot;&gt;&lt;FONT color=#006400&gt;per this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#006400&gt;. &lt;/FONT&gt;
&lt;LI&gt;Add a Copy() method to BusinessBase (like Clone(), but with ability to change resulting objects). And cascade call through to child objects. 
&lt;LI&gt;&lt;FONT color=#006400&gt;Investigate possible edit level bug in ProjectTrackervb 3.5.1 (or CSLA .NET) as per &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/23583.aspx&quot;&gt;&lt;FONT color=#006400&gt;this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#006400&gt; and as per &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/23752.aspx&quot;&gt;&lt;FONT color=#006400&gt;this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#006400&gt;. &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT color=#006400&gt;Fix possible bug in FilteredBindingList.Clear() as per &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/23675.aspx&quot;&gt;&lt;FONT color=#006400&gt;this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#006400&gt;.&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#008000&gt;Fix issue with how WPF 3.5 responds to PropertyChanged events (different from 3.0) as per &lt;/FONT&gt;&lt;A href=&quot;http://forums.lhotka.net/forums/thread/23837.aspx&quot;&gt;&lt;FONT color=#008000&gt;this thread&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#008000&gt;. &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT color=#008000&gt;Fix issue with LINQ to CSLA where 64 bit numeric values cause failure.&lt;/FONT&gt; 
&lt;LI&gt;Managed backing fields should have some way to be marked as NotUndoable. 
&lt;LI&gt;Add an overload for FilteredBindingList.ApplySort() that takes a propertyName as a string? Currently you must put in a propertyDescriptor, unlike SortedBindingList which can take either. 
&lt;LI&gt;&lt;FONT color=#006400&gt;Change GetProperty/SetProperty so the two-type overload is called GetPropertyConvert/SetPropertyConvert (or something like that). This would allow the compilers to do type inference on the type parameters, reducing code.&lt;/FONT&gt; 
&lt;LI&gt;There is a potential issue with Windows Forms data binding in a data grid, where a newly added item doesn't disappear when the user presses ESC as per &lt;A href=&quot;http://forums.lhotka.net/forums/thread/24185.aspx&quot;&gt;this thread&lt;/A&gt;. 
&lt;LI&gt;&lt;FONT color=#006400&gt;GetProperty() is missing an overload: (propertyinfo, field, default, throwException).&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA .NET</category>  </item>  <item>   <title>Version 3.5.1 change log</title>   <guid>http://www.lhotka.net/article.aspx?id=00f1111e-d106-4b01-a221-9001903674cf</guid>   <link>http://www.lhotka.net/article.aspx?id=00f1111e-d106-4b01-a221-9001903674cf</link>   <pubDate>Mon, 21 Jul 2008 15:43:34 GMT</pubDate>   <description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;This document is the change log for version 3.5.1 of CSLA .NET. &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;RC0 3.5.1-0807xx:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;BusinessBase (080721-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BusinessBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; no longer raises a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; event when a child object changes. This is because doing so caused nasty side-effects in Windows Forms data binding, and is therefore obviously not intended behavior for that event. Instead, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BusinessBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; now raises a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ChildChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; event when a child object (list or not) changes. The original &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;sender&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChangedEventArgs&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;/&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ListChangedEventArgs&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; values are provided to the handler of &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ChildChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Beta 2 3.5.1-080717:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;PropertyInfo (080713-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Remove one constructor overload: &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;New(name, defaultValue)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;. This ctor could be an ambiguous overload if &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;lt;T&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; was string, so removal of this overload was necessary. &lt;SPAN style=&quot;BACKGROUND: red; mso-highlight: red&quot;&gt;This is a breaking change for anyone using this overload.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;BusinessBase/ReadOnlyBase (080709-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add missing overload of &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;GetProperty&amp;lt;P&amp;gt;(PropertyInfo&amp;lt;P&amp;gt;, field,default,noaccess)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;FieldData (080703-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Make several properties virtual to enable extensibility scenarios.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;DecoratedRuleArgs (080626-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Fix possible formatting issues with special characters and null values.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Beta 1 3.5.1-080623:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;SmartDate (080623-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Fix bug converting a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DateTime&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; to a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;SmartDate&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.5.1-080610:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Linq (080610-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Updated the expression evaluator in the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CslaQueryProvider&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; to more appropriately match expressions that get passed through to &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Queryable&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; to the correct method in cases with nested generic parameters.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.5.1-080530:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;BusinessBase &amp;amp; ValidationRules (080530-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Mark obsolete methods so they no longer appear in Intellisense.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;ApplicationContext (080530-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChangedMode&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; property to allow configuration of CSLA .NET to raise &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; events the correct way for Windows Forms or WPF/XAML as appropriate.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;BusinessBase (080530-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;In &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyHasChanged()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; (and thus &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;SetProperty()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;), optionally raise &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; events for all properties for which validation rules are run. This change only takes effect if &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Csla.ApplicationContext.PropertyChangedMode&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; is set to &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChangedModes.Xaml&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.5.1-080529:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;UndoableBase (080527-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Fix an issue where the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;FieldDataManager&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; could find its edit level out of sync with its containing business object.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.5.1-080527:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;FieldDataManager (080527-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Fix a null reference bug and some related issues around n-level undo, data binding and managed property values.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;FieldDataManager (080527-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add an &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IsFieldDirty()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; method so a business object can determine if a specific field is dirty.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;FilteredBindingList (080527-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Change &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Clear()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; to only clear the items in the filtered view.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Security\AuthorizationRulesManager (080527-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Fix threading issue where an &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ArgumentException&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; could occur as two threads attempted to add the same item to the dictionary.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;EditableRootListBase (080527-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;virtual OnChildPropertyChanged()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; method that is called when a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; event is handled from a child of the list.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.5.1-080426:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Linq (080405-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Fix a bug with the way BLB cross-references positions of an item that caused a failure scenario when calling &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Insert()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; to add a new item to a list.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Criteria (080424-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ICriteria&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; interface and have &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CriteriaBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; implement it. Have &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MethodCaller&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; use &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ICriteria&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; instead of &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CriteriaBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; to detect the business object type.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;UndoableBase (080426-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Fix problem where managed backing fields in &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;FieldDataManager&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; were not processed corrected during undo operations triggered by data binding.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA .NET</category>  </item>  <item>   <title>Unit Driven test framework</title>   <guid>http://www.lhotka.net/article.aspx?id=4bf45452-d501-429c-809e-fe2f0ea7f59d</guid>   <link>http://www.lhotka.net/article.aspx?id=4bf45452-d501-429c-809e-fe2f0ea7f59d</link>   <pubDate>Tue, 15 Jul 2008 05:00:00 GMT</pubDate>   <description>&lt;P&gt;While building CSLA Light it has become clear that the prototype unit test framework supplied by Microsoft is inadequate for testing Silverlight applications. The primary issue is the lack of support for testing any asynchronous operations, and in Silverlight any server communication is asynchronous. So to test things like the data portal and asynchronous validation rules we needed something more robust.&lt;/P&gt;
&lt;P&gt;Also, many of the async features in CSLA Light have been added to CSLA .NET, to maintain parity between the two frameworks. This means that the existing nunit/mstest cslatest project needs to support async tests as well. While nunit is capable of doing this, we created some helpers that make it far easier to create the tests.&lt;/P&gt;
&lt;P&gt;The result is a unit test framework and library. A full unit test engine for Silverlight, and an add-on library for nunit/mstest.&lt;/P&gt;
&lt;P&gt;We've chosen to donate this to the community as&amp;nbsp;a separate project named &lt;EM&gt;Unit Driven&lt;/EM&gt;, because it is useful for testing any application, not just CSLA .NET and CSLA Light.&lt;/P&gt;
&lt;P&gt;You can find the project here: &lt;A href=&quot;http://www.codeplex.com/UnitDriven&quot;&gt;http://www.codeplex.com/UnitDriven&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It is a pure open-source project, so if you'd like to contribute to the effort you are more than welcome. While we're using this code as we build CSLA Light and CSLA .NET 3.6, there's no doubt that it can be improved quite a lot to cover numerous other scenarios.&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA Light</category>  </item>  <item>   <title>Version 3.6.0 change log</title>   <guid>http://www.lhotka.net/article.aspx?id=9b0ca1dd-3640-4088-9034-11538a0504f9</guid>   <link>http://www.lhotka.net/article.aspx?id=9b0ca1dd-3640-4088-9034-11538a0504f9</link>   <pubDate>Tue, 15 Jul 2008 05:00:00 GMT</pubDate>   <description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;This document is the change log for version 3.6.0 of CSLA .NET. &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.6.0-080715:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Unit tests (080715-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;cslatest&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; project now has a dependency on UnitDriven, an open-source unit test framework that extends nunit and MSTest. UnitDriven is a spin-off effort from building CSLA Light, and is available at &lt;A href=&quot;http://www.codeplex.com/UnitDriven&quot;&gt;www.codeplex.com/UnitDriven&lt;/A&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The specific UnitDriven assemblies required by &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;cslatest&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; are part of the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;cslatest&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; release download, or you can get them from CodePlex, or you can get them from svn://svn.lhotka.net/csla/trunk/Dependencies.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;IsSavable (080715-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Move &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IsSavable&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; from &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IEditableBusinessObject&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IEditableCollection&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; interfaces to the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ITrackStatus&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; interface.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Data Portal (080714-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ObjectFactory&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; attribute. When used on a business class, causes the data portal to create an instance of the specified factory and invoke methods on that factory rather than the normal &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DataPortal_XYZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; methods. The factory assumes &lt;I style=&quot;mso-bidi-font-style: normal&quot;&gt;all&lt;/I&gt; responsibility for creating the business object and managing its state (including &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IsNew&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;/&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IsDirty&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;/etc.) – nothing is automatic.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CslaObjectFactoryLoader&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; config setting can be used to specify an &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IObjectFactoryLoader&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; object that is responsible for creating the object factory objects. Alternately, the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Csla.Server.DataPortalSelector.FactoryLoader&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; property can be directly set to an instance of an &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IObjectFactoryLoader&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; object, which again is responsible for creating object factory objects.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Validation (080714-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added support for async validation rules. These rules are &lt;I style=&quot;mso-bidi-font-style: normal&quot;&gt;started&lt;/I&gt; along with normal rule methods, but run asynchronously. The rule method is responsible for calling back into CSLA when the rule completes, so an appropriate &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; event can be raised by the business object. The rule method is responsible for ensuring that the callback occurs on the UI thread (in WPF or Windows Forms), and for dealing with any possible threading issues in other environments (such as ASP.NET or WAS).&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Silverlight Data Portal (080714-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CslaMobileFactoryLoader&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; config switch to allow an advanced user to replace the default creation of a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFactory&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; object with their own approach. To do this, they need to create a class that implements &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IMobileFactoryLoader&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;PropertyInfo (080713-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Remove one constructor overload: &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;New(name, defaultValue)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;. This ctor could be an ambiguous overload if &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;lt;T&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; was string, so removal of this overload was necessary. &lt;SPAN style=&quot;BACKGROUND: red; mso-highlight: red&quot;&gt;This is a breaking change for anyone using this overload.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Validation (080711-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Change the initialization of per-type business rules so an exception in &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;AddRule()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; won’t leave a partially loaded rule manager object in memory. While unlikely to ever affect real application code, this problem was affecting some unit test scenarios in CSLA Light.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Project structure (080709-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Rearrange files in the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DataPortal&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; folder so they are now in folders that match their namespaces.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;BusinessBase/ReadOnlyBase (080709-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add missing overload of &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;GetProperty&amp;lt;P&amp;gt;(PropertyInfo&amp;lt;P&amp;gt;,field,default,noaccess)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Async Data Portal (080701-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added a new &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DataPortal&amp;lt;T&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; class to provide asynchronous data portal behaviors comparable to those in CSLA Light. This also required modification of the pre-existing data portal so it no longer caches the proxy object, because the proxy objects may or may not be threadsafe.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The pre-existing data portal functionality is the same as in the past. This is not a breaking change. However, a business object or UI developer can now use the data portal in an async manner like this:&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;Dim dp = New DataPortal(Of CustomerEdit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;AddHandler dp.CreateCompleted, AddressOf dp_CreateCompleted&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;dp.BeginCreate()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;o:p&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;Private Sub dp_CreateCompleted( _&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;sender As Object, e As DataPortalResult(Of CustomerEdit))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;o:p&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;If e.Error IsNot Nothing Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;' do something about exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;Else&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;' do something with the result in e.Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;o:p&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;As in Silverlight, the callback event will run on the UI thread when possible. This is automatic in WPF and Windows Forms. In other environments, such as ASP.NET, the callback event will run on a background thread.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.6.0-080626:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;GetProperty/SetProperty/ReadProperty/LoadProperty (080626-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Change all &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;lt;P, F&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; overloads to include the word ‘Convert’. For example, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;GetProperty&amp;lt;P,F&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; is now &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;GetPropertyConvert&amp;lt;P,F&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;. This avoids an ambiguity scenario and allows the compiler to do better type inference. &lt;SPAN style=&quot;BACKGROUND: red; mso-highlight: red&quot;&gt;This is a breaking change for any code using the previous &amp;lt;P,F&amp;gt; overloads.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;MobileFormatter (080626-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, which provides limited capabilities like the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BinaryFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, but works in Silverlight and .NET. This formatter is used by the CSLA Light data portal to transfer objects to/from a .NET app server.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; support includes the introduction of &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IMobileObject&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, and enhancements to numerous other &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Serializable&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; classes within CSLA .NET so they are able to serialize their private fields without reflection as required by the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Silverlight Data Portal (080626-C#/&lt;SPAN style=&quot;BACKGROUND: silver; mso-highlight: silver&quot;&gt;VB-tbd&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added a CSLA Light compatible data portal host. This host is designed to listen for inbound requests from a Silverlight client running CSLA Light. &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Those calls are either routed directly into the standard CSLA .NET data portal, or they are routed to a special factory/observer object defined using the new &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFactory&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; attribute.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA .NET</category>  </item>  <item>   <title>Version 3.6.0 change log</title>   <guid>http://www.lhotka.net/article.aspx?id=db773872-3990-4321-9a0f-8dc3271de67e</guid>   <link>http://www.lhotka.net/article.aspx?id=db773872-3990-4321-9a0f-8dc3271de67e</link>   <pubDate>Tue, 15 Jul 2008 05:00:00 GMT</pubDate>   <description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;This document is the change log for version 3.6.0 of CSLA Light. &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.6.0-080715:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Unit tests (080715-C#/VB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;cslalighttest&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; project now has a dependency on UnitDriven, an open-source unit test framework that extends nunit and MSTest. UnitDriven is a spin-off effort from building CSLA Light, and is available at &lt;A href=&quot;http://www.codeplex.com/UnitDriven&quot;&gt;www.codeplex.com/UnitDriven&lt;/A&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The specific UnitDriven assemblies required by &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;cslalighttest&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; are part of the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;cslalighttest&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; release download, or you can get them from CodePlex, or you can get them from svn://svn.lhotka.net/csla/trunk/Dependencies.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Authentication (080715-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added initial support for custom authentication. The model is the same as with CSLA .NET, where you create your own custom principal and identity classes, and use the data portal to load the identity class with user and role information on the server.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Validation (080714-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added support for async validation rules. These rules are &lt;I style=&quot;mso-bidi-font-style: normal&quot;&gt;started&lt;/I&gt; along with normal rule methods, but run asynchronously. The rule method is responsible for calling back into CSLA when the rule completes, so an appropriate &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;PropertyChanged&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; event can be raised by the business object. The rule method is responsible for ensuring that the callback occurs on the UI thread.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Validation (080713-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added support for validation rules equivalent to that in CSLA .NET.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;BusinessBase (080709-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Add missing overload of &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;GetProperty&amp;lt;P&amp;gt;(PropertyInfo&amp;lt;P&amp;gt;, field,default,noaccess)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Read-Only Base Classes (080707-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Base implementation of &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ReadOnlyBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ReadOnlyListBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; for serialization added, along with associated cloning and data portal tests.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;Pre-release 3.6.0-080626:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Base classes (080626-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;All primary base classes used to create business objects exist, at least in shell form. &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BusinessBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BusinessListBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CriteriaBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; support serialization (cloning and travel through the data portal).&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ReadOnlyBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ReadOnlyListBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;NameValueListBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;EditableRootListBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CommandBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; are incomplete shells.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BusinessBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; does not yet support validation or authorization, but does support both managed and private backing fields for properties.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;MobileFormatter (080626)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Added a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, which provides limited capabilities like the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BinaryFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, but works in Silverlight and .NET. This formatter is used by the CSLA Light data portal to transfer objects to/from a .NET app server.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; support includes the introduction of &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IMobileObject&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, and a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Serializable&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;/&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;NonSerialized&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; attribute definitions similar to those in .NET.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Support for the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; exists in most &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Serializable&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; classes within CSLA Light so they are able to serialize their private fields without reflection as required by Silverlight and the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Business objects that only use managed backing fields are serialized automatically. Business objects that use private backing fields must override &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;OnGetState()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;OnSetState()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; methods to get/set their private backing fields into the serialization data stream.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Data Portal (080626)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The CSLA Light data portal supports Create/Fetch/Update/Delete operations. The data portal uses an asynchronous call pattern just like all other Silverlight technologies for calling a server. This means the data portal works differently from the one in CSLA .NET, but still provides the same conceptual behavior. Here’s how to invoke the data portal to create an object:&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;var dp = new DataPortal&amp;lt;Customer&amp;gt;();&lt;BR&gt;dp += dp_CreateCompleted; // callback event&lt;BR&gt;dp.BeginCreate();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Then you must implement the callback event handler to handle the result:&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;private void dp_CreateCompleted(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;object sender, DataPortalResult&amp;lt;Customer&amp;gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;if (e.Error != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// process exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;o:p&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;this.DataContext = e.Object; // use result&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Alternately you can use a lambda to shorten the code to this:&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;var dp = new DataPortal&amp;lt;Customer&amp;gt;();&lt;BR&gt;dp += (o, e) =&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;if (e.Error != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;// process exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;o:p&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;this.DataContext = e.Object; // use result&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt 0.5in&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;dp.BeginCreate();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The data portal supports both local (3-tier) and remote (4-tier) modes. &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The local mode runs &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DataPortal_XYZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; methods in the objects on the Silverlight client. This allows you to write methods like &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DataPortal_Fetch()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; that run on the client so you can manually call remote services as you choose. For instance, you could use this technique to retrieve data from a server running ADO.NET Data Services for the Web, and use the results to populate your object graph with data.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The remote mode uses WCF as the network transport to communicate with a CSLA .NET data portal running on a .NET web server. The CSLA .NET data portal is not the “normal” data portal, but is a new data portal in CSLA .NET 3.6 designed to support a CSLA Light client. See the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;Csla.Server.Hosts.Silverlight&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; namespace for the code. The service contract to expose is &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IWcfPortal&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, and the service implementation is &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;WcfPortal&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;With a remote data portal your object would be loaded on the server using normal CSLA .NET techniques (again, in a &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DataPortal_XYZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; method – but one running in .NET on your servers).&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The remote data portal operates in two possible modes. One mode is a passthrough, where each CSLA Light call is simply passed through to the CSLA .NET data portal, and the result is transparently returned. This is appropriate when the Silverlight client is trusted, and you want the simplest and most “CSLA like” experience.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The other mode will invoke an “observer” object on the .NET server so you can examine the inbound client request (the objects sent to the server from the client) before allowing further processing. To do this, the root business class should have the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFactory&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; attribute applied to specify the type name and methods for the observer object.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Silverlight does not currently have a good configuration story. At the moment, the data portal is configured through code by your client application. Typically you’ll configure the data portal once, as the application starts running. You can use the following settings:&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;Csla.DataPortal.ProxyTypeName = &quot;Local&quot;; // or &quot;WcfProxy&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;Csla.DataPortalClient.WcfProxy.DefaultUrl = &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&quot;http://myserver/mysite/service.svc&quot;; // URL to .NET data portal&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;Csla.DataPortalClient.WcfProxy.DefaultBinding = &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;new BasicHttpBinding(); // WCF binding, BasicHttpBinding is default&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The end result is that you can specify whether to run the data portal locally or over WCF, and if you choose WCF you can specify the URL and (optionally) the binding to the remote server.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;N-level Undo (080626)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BusinessBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BusinessListBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; support n-level undo in Silverlight just like in .NET. the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BeginEdit()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;CancelEdit()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; and &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ApplyEdit()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; methods work the same as they do in CSLA .NET.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;There is no support for &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;IEditableObject&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, because that interface doesn’t exist in Silverlight. This means that n-level undo is &lt;I style=&quot;mso-bidi-font-style: normal&quot;&gt;only used if you use it&lt;/I&gt;. There is no overhead to its existence unless you call &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;BeginEdit()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; in your code.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;The n-level undo functionality does need to do a type of serialization of object data – it relies on the Memento design pattern. The approach taken in CSLA Light uses the same serialization scheme as the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;, so a business object author that makes their object work with the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;MobileFormatter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; automatically supports n-level undo. No extra effort is required unless you use private backing fields in your objects.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;GetProperty/SetProperty/ReadProperty/LoadProperty (080626-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;Change all &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;&amp;lt;P, F&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; overloads to include the word ‘Convert’. For example, &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;GetProperty&amp;lt;P,F&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; is now &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;GetPropertyConvert&amp;lt;P,F&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;. This avoids an ambiguity scenario and allows the compiler to do better type inference.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;Unit testing (080626-C#)&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;While there is a Microsoft-supplied unit testing framework for Silverlight, it doesn’t support tests against asynchronous methods. This meant we had no way of testing the data portal behaviors in CSLA Light. Unfortunately Microsoft’s framework source isn’t available, so we were unable to enhance it.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;To resolve this issue, the &lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;cslalighttest&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; project includes an nunit-like unit testing engine. This engine is a subset of what you might expect in other testing frameworks, but it is sufficient for executing unit tests against Silverlight code, and it supports testing asynchronous methods.&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA Light</category>  </item>  <item>   <title>CSLA Light downloads</title>   <guid>http://www.lhotka.net/article.aspx?id=c09023e0-cf98-4979-861f-b917f253c180</guid>   <link>http://www.lhotka.net/article.aspx?id=c09023e0-cf98-4979-861f-b917f253c180</link>   <pubDate>Tue, 15 Jul 2008 05:00:00 GMT</pubDate>   <description>&lt;DIV&gt;
&lt;DIV style=&quot;FLOAT: right; WIDTH: 400px; TEXT-ALIGN: center&quot;&gt;
&lt;DIV style=&quot;FLOAT: right; WIDTH: 400px; TEXT-ALIGN: center&quot;&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;A href=&quot;http://www.apress.com/book/bookDisplay.html?bID=10091&quot;&gt;&lt;/A&gt;
&lt;P&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #83b8e4 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #83b8e4 1px solid; PADDING-LEFT: 5px; FLOAT: right; PADDING-BOTTOM: 5px; BORDER-LEFT: #83b8e4 1px solid; WIDTH: 300px; MARGIN-RIGHT: 30px; PADDING-TOP: 5px; BORDER-BOTTOM: #83b8e4 1px solid&quot;&gt;
&lt;P align=center&gt;Please consider making a donation to help support the ongoing development of CSLA .NET. &lt;BR&gt;&lt;BR&gt;&lt;A href=&quot;https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;business=rocky%40lhotka%2enet&amp;amp;item_name=CSLA%20%2eNET%20development&amp;amp;item_number=CslaDonation&amp;amp;no_shipping=1&amp;amp;return=http%3a%2f%2fwww%2elhotka%2enet%2fthankyou%2easpx&amp;amp;cancel_return=http%3a%2f%2fwww%2elhotka%2enet&amp;amp;no_note=1&amp;amp;tax=0&amp;amp;currency_code=USD&amp;amp;bn=PP%2dDonationsBF&amp;amp;charset=UTF%2d8&quot;&gt;&lt;IMG alt=&quot;Make donation through PayPal - it's fast, free and secure!&quot; src=&quot;https://www.paypal.com/en_US/i/btn/x-click-but04.gif&quot; border=0&gt; &lt;/A&gt;&lt;BR&gt;&lt;A href=&quot;/Article.aspx?id=fcfb78e8-7cf6-4f1e-a279-a3a735491007&quot;&gt;Why donate?&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;IMG src=&quot;/images/csla_logo1_42.png&quot; border=0 valign=&quot;middle&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=80 src=&quot;/images/silverlight_detail.jpg&quot; border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Version 3.6 preview:&lt;/STRONG&gt; &lt;/P&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse&quot; border=1&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TD style=&quot;WIDTH: 100px&quot;&gt;&lt;STRONG&gt;Version&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 85px&quot;&gt;&lt;STRONG&gt;VB&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 85px&quot;&gt;&lt;STRONG&gt;C#&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 85px&quot;&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 150px&quot;&gt;&lt;STRONG&gt;Notes&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;CSLA .NET&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;n/a&lt;/TD&gt;
&lt;TD&gt;&lt;A href=&quot;/files/csla36/cslacs-3.6.0-080715.zip&quot;&gt;Download&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href=&quot;/files/csla36/cslatest-3.6.0-080715.zip&quot;&gt;Download&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href=&quot;/Article.aspx?area=4&amp;amp;id=9b0ca1dd-3640-4088-9034-11538a0504f9&quot;&gt;Change log&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;CSLA Light&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;n/a&lt;/TD&gt;
&lt;TD&gt;&lt;A href=&quot;/files/cslalight/cslalightcs-3.6.0-080715.zip&quot;&gt;Download&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href=&quot;/files/cslalight/cslalighttest-3.6.0-080715.zip&quot;&gt;Download&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href=&quot;/Article.aspx?area=4&amp;amp;id=db773872-3990-4321-9a0f-8dc3271de67e&quot;&gt;Change log&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Building CSLA Light &lt;EM&gt;requires&lt;/EM&gt; the CSLA .NET code base. This is because numerous code files from CSLA .NET are linked into the CSLA Light project. You need to download both CSLA Light and CSLA .NET to build CSLA Light. Put the cslacs and cslalightcs folders at a peer level:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier New&quot; size=2&gt;\cslacs&lt;BR&gt;\cslalightcs&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For client-only development you can use just CSLA Light 3.6 in Silverlight to build your application. In this case, you'll need to run the data portal in local mode, and your client-side DataPortal_XYZ methods will need to make calls to your services from the client.&lt;/P&gt;
&lt;P&gt;For client/server scenarios using the data portal to communicate from Silverlight client to .NET server, you will also need to use CSLA .NET 3.6 to configure a web/application server. In this case, you'll configure the Silverlight data portal to communicate with this .NET web server, and your business objects will move between client and server automatically.&lt;/P&gt;
&lt;P&gt;All code requires Visual Studio 2008, .NET 3.5 SP1 (pre-release), Silverlight Beta 2 and the Silverlight Beta 2 pre-release tools for Visual Studio 2008.&lt;/P&gt;
&lt;P&gt;The cslatest and cslalighttest projects need either nunit or MSTest. Also, the cslalighttest project &lt;EM&gt;requires&lt;/EM&gt; files from cslatest, and so you must download both. They also need &lt;A href=&quot;http://www.codeplex.com/UnitDriven&quot;&gt;UnitDriven&lt;/A&gt; (required assemblies are in the download). All folders should be placed at a peer level:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier New&quot; size=2&gt;\cslacs&lt;BR&gt;\cslalightcs&lt;BR&gt;\cslalighttest&lt;BR&gt;\cslatest&lt;BR&gt;\Dependencies&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffff00&quot;&gt;Please remember these downloads are offered as early previews only. &lt;BR&gt;There is no guarantee of features or stability!&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>Downloads</category>  </item>  <item>   <title>CSLA CE downloads</title>   <guid>http://www.lhotka.net/article.aspx?id=ec20d7ad-9bb5-4ef8-9e5f-b59aecf9750d</guid>   <link>http://www.lhotka.net/article.aspx?id=ec20d7ad-9bb5-4ef8-9e5f-b59aecf9750d</link>   <pubDate>Mon, 14 Jul 2008 05:00:00 GMT</pubDate>   <description>&lt;DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style=&quot;FLOAT: right; WIDTH: 400px; TEXT-ALIGN: center&quot;&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;A href=&quot;http://www.apress.com/book/bookDisplay.html?bID=10091&quot;&gt;&lt;/A&gt;
&lt;P&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #83b8e4 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #83b8e4 1px solid; PADDING-LEFT: 5px; FLOAT: right; PADDING-BOTTOM: 5px; BORDER-LEFT: #83b8e4 1px solid; WIDTH: 300px; MARGIN-RIGHT: 30px; PADDING-TOP: 5px; BORDER-BOTTOM: #83b8e4 1px solid&quot;&gt;
&lt;P align=center&gt;Please consider making a donation to help support the ongoing development of CSLA .NET. &lt;BR&gt;&lt;BR&gt;&lt;A href=&quot;https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;business=rocky%40lhotka%2enet&amp;amp;item_name=CSLA%20%2eNET%20development&amp;amp;item_number=CslaDonation&amp;amp;no_shipping=1&amp;amp;return=http%3a%2f%2fwww%2elhotka%2enet%2fthankyou%2easpx&amp;amp;cancel_return=http%3a%2f%2fwww%2elhotka%2enet&amp;amp;no_note=1&amp;amp;tax=0&amp;amp;currency_code=USD&amp;amp;bn=PP%2dDonationsBF&amp;amp;charset=UTF%2d8&quot;&gt;&lt;IMG alt=&quot;Make donation through PayPal - it's fast, free and secure!&quot; src=&quot;https://www.paypal.com/en_US/i/btn/x-click-but04.gif&quot; border=0&gt; &lt;/A&gt;&lt;BR&gt;&lt;A href=&quot;/Article.aspx?id=fcfb78e8-7cf6-4f1e-a279-a3a735491007&quot;&gt;Why donate?&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;IMG src=&quot;/images/csla_logo1_42.png&quot; border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG src=&quot;/images/220px-Windows_CE.gif&quot; border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;For use with Windows CE and .NET CF 2.0&lt;/STRONG&gt;:&lt;/P&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse&quot; border=1&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TD style=&quot;WIDTH: 100px&quot;&gt;&lt;STRONG&gt;Version&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 85px&quot;&gt;&lt;STRONG&gt;VB&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 85px&quot;&gt;&lt;STRONG&gt;C#&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 85px&quot;&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;WIDTH: 150px&quot;&gt;&lt;STRONG&gt;Notes&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;3.0 (beta)&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;n/a&lt;/TD&gt;
&lt;TD&gt;&lt;A href=&quot;/files/cslace/cslacecs-3.0.2-070911.zip&quot;&gt;Download&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;n/a&lt;/TD&gt;
&lt;TD&gt;n/a&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffff00&quot;&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA CE</category>  </item>  <item>   <title>CSLA Light 3.6 License</title>   <guid>http://www.lhotka.net/article.aspx?id=2c9fbb68-f8ef-4251-938c-0a58ec7685fd</guid>   <link>http://www.lhotka.net/article.aspx?id=2c9fbb68-f8ef-4251-938c-0a58ec7685fd</link>   <pubDate>Wed, 09 Jul 2008 18:14:42 GMT</pubDate>   <description>&lt;P&gt;&lt;STRONG&gt;LICENSE AND WARRANTY&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The CSLA Light framework is Copyright 2008 by Rockford Lhotka. &lt;/P&gt;
&lt;P&gt;You can use this Software for any noncommercial purpose, including &lt;BR&gt;distributing derivative works. You can use this Software for any commercial &lt;BR&gt;purpose other than you may not use it, in whole or in part, to create a &lt;BR&gt;commercial framework product. &lt;/P&gt;
&lt;P&gt;In short, you can use CSLA Light and modify it to create other commercial or &lt;BR&gt;business software, you just can't take the framework itself, modify it and &lt;BR&gt;sell it as a product. &lt;/P&gt;
&lt;P&gt;In return, the owner simply requires that you agree: &lt;/P&gt;
&lt;P&gt;This Software License Agreement (&quot;Agreement&quot;) is effective &lt;BR&gt;upon your use of CSLA Light (&quot;Software&quot;).&lt;/P&gt;
&lt;P&gt;1. Ownership.&lt;BR&gt;The CSLA Light framework is Copyright 2008 by Rockford Lhotka, &lt;BR&gt;Eden Prairie, MN, USA. &lt;/P&gt;
&lt;P&gt;2. Copyright Notice.&lt;BR&gt;You must not remove any copyright notices from the Software source code. &lt;/P&gt;
&lt;P&gt;3. License.&lt;BR&gt;The owner hereby grants a perpetual, non-exclusive, limited license to use &lt;BR&gt;the Software as set forth in this Agreement.&lt;/P&gt;
&lt;P&gt;4. Source Code Distribution.&lt;BR&gt;If you distribute the Software in source code form you must do so only under &lt;BR&gt;this License (i.e. you must include a complete copy of this License with &lt;BR&gt;your distribution).&lt;/P&gt;
&lt;P&gt;5. Binary or Object Distribution.&lt;BR&gt;You may distribute the Software in binary or object form with no requirement &lt;BR&gt;to display copyright notices to the end user. The binary or object form must &lt;BR&gt;retain the copyright notices included in the Software source code.&lt;/P&gt;
&lt;P&gt;6. Restrictions.&lt;BR&gt;You may not sell the Software. If you create a software development framework &lt;BR&gt;based on the Software as a derivative work, you may not sell that derivative &lt;BR&gt;work. This does not restrict the use of the Software for creation of other &lt;BR&gt;types of non-commercial or commercial applications or derivative works. &lt;/P&gt;
&lt;P&gt;7. Disclaimer of Warranty.&lt;BR&gt;The Software comes &quot;as is&quot;, with no warranties. None whatsoever. This means &lt;BR&gt;no express, implied, statutory or other warranty, including without &lt;BR&gt;limitation, warranties of merchantability or fitness for a particular &lt;BR&gt;purpose, noninfringement, or the presence or absence of errors, whether or &lt;BR&gt;not discoverable. Also, you must pass this disclaimer on whenever you &lt;BR&gt;distribute the Software. &lt;/P&gt;
&lt;P&gt;8. Liability.&lt;BR&gt;Neither Rockford Lhotka nor any contributor to the Software will be liable &lt;BR&gt;for any of those types of damages known as indirect, special, consequential, &lt;BR&gt;incidental, punitive or exemplary related to the Software or this License, to &lt;BR&gt;the maximum extent the law permits, no matter what legal theory it’s based &lt;BR&gt;on. Also, you must pass this limitation of liability on whenever you &lt;BR&gt;distribute the Software. &lt;/P&gt;
&lt;P&gt;9. Patents.&lt;BR&gt;If you sue anyone over patents that you think may apply to the Software &lt;BR&gt;for a person's use of the Software, your license to the Software ends &lt;BR&gt;automatically. &lt;/P&gt;
&lt;P&gt;The patent rights, if any, licensed hereunder only apply to the Software, &lt;BR&gt;not to any derivative works you make. &lt;/P&gt;
&lt;P&gt;10. Termination.&lt;BR&gt;Your rights under this License end automatically if you breach it in any way.&lt;/P&gt;
&lt;P&gt;Rockford Lhotka reserves the right to release the Software under different &lt;BR&gt;license terms or to stop distributing the Software at any time. Such an &lt;BR&gt;election will not serve to withdraw this Agreement, and this Agreement will &lt;BR&gt;continue in full force and effect unless terminated as stated above.&lt;/P&gt;
&lt;P&gt;11. Governing Law.&lt;BR&gt;This Agreement shall be construed and enforced in accordance with the laws &lt;BR&gt;of the state of Minnesota, USA.&lt;/P&gt;
&lt;P&gt;12. No Assignment.&lt;BR&gt;Neither this Agreement nor any interest in this Agreement may be assigned &lt;BR&gt;by Licensee without the prior express written approval of Developer.&lt;/P&gt;
&lt;P&gt;13. Final Agreement.&lt;BR&gt;This Agreement terminates and supersedes all prior understandings or &lt;BR&gt;agreements on the subject matter hereof.&amp;nbsp; This Agreement may be modified &lt;BR&gt;only by a further writing that is duly executed by both parties.&lt;/P&gt;
&lt;P&gt;14. Severability.&lt;BR&gt;If any term of this Agreement is held by a court of competent jurisdiction &lt;BR&gt;to be invalid or unenforceable, then this Agreement, including all of the &lt;BR&gt;remaining terms, will remain in full force and effect as if such invalid &lt;BR&gt;or unenforceable term had never been included.&lt;/P&gt;
&lt;P&gt;15. Headings.&lt;BR&gt;Headings used in this Agreement are provided for convenience only and shall &lt;BR&gt;not be used to construe meaning or intent.&lt;BR&gt;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA Light</category>  </item>  <item>   <title>CSLA .NET 2.0/3.0/3.5 License</title>   <guid>http://www.lhotka.net/article.aspx?id=1d101106-a8e8-4008-ab8a-98736fb6b948</guid>   <link>http://www.lhotka.net/article.aspx?id=1d101106-a8e8-4008-ab8a-98736fb6b948</link>   <pubDate>Wed, 09 Jul 2008 18:08:50 GMT</pubDate>   <description>&lt;P&gt;LICENSE AND WARRANTY&lt;/P&gt;
&lt;P&gt;The CSLA .NET framework is Copyright 2006-2008 by Rockford Lhotka. &lt;/P&gt;
&lt;P&gt;You can use this Software for any noncommercial purpose, including &lt;BR&gt;distributing derivative works. You can use this Software for any commercial &lt;BR&gt;purpose other than you may not use it, in whole or in part, to create a &lt;BR&gt;commercial framework product. &lt;/P&gt;
&lt;P&gt;In short, you can use CSLA .NET and modify it to create other commercial or &lt;BR&gt;business software, you just can't take the framework itself, modify it and &lt;BR&gt;sell it as a product. &lt;/P&gt;
&lt;P&gt;In return, the owner simply requires that you agree: &lt;/P&gt;
&lt;P&gt;This Software License Agreement (&quot;Agreement&quot;) is effective &lt;BR&gt;upon your use of CSLA .NET (&quot;Software&quot;).&lt;/P&gt;
&lt;P&gt;1. Ownership.&lt;BR&gt;The CSLA .NET framework is Copyright 2006-2008 by Rockford Lhotka, &lt;BR&gt;Eden Prairie, MN, USA. &lt;/P&gt;
&lt;P&gt;2. Copyright Notice.&lt;BR&gt;You must not remove any copyright notices from the Software source code. &lt;/P&gt;
&lt;P&gt;3. License.&lt;BR&gt;The owner hereby grants a perpetual, non-exclusive, limited license to use &lt;BR&gt;the Software as set forth in this Agreement.&lt;/P&gt;
&lt;P&gt;4. Source Code Distribution.&lt;BR&gt;If you distribute the Software in source code form you must do so only under &lt;BR&gt;this License (i.e. you must include a complete copy of this License with &lt;BR&gt;your distribution).&lt;/P&gt;
&lt;P&gt;5. Binary or Object Distribution.&lt;BR&gt;You may distribute the Software in binary or object form with no requirement &lt;BR&gt;to display copyright notices to the end user. The binary or object form must &lt;BR&gt;retain the copyright notices included in the Software source code.&lt;/P&gt;
&lt;P&gt;6. Restrictions.&lt;BR&gt;You may not sell the Software. If you create a software development framework &lt;BR&gt;based on the Software as a derivative work, you may not sell that derivative &lt;BR&gt;work. This does not restrict the use of the Software for creation of other &lt;BR&gt;types of non-commercial or commercial applications or derivative works. &lt;/P&gt;
&lt;P&gt;7. Disclaimer of Warranty.&lt;BR&gt;The Software comes &quot;as is&quot;, with no warranties. None whatsoever. This means &lt;BR&gt;no express, implied, statutory or other warranty, including without &lt;BR&gt;limitation, warranties of merchantability or fitness for a particular &lt;BR&gt;purpose, noninfringement, or the presence or absence of errors, whether or &lt;BR&gt;not discoverable. Also, you must pass this disclaimer on whenever you &lt;BR&gt;distribute the Software. &lt;/P&gt;
&lt;P&gt;8. Liability.&lt;BR&gt;Neither Rockford Lhotka nor any contributor to the Software will be liable &lt;BR&gt;for any of those types of damages known as indirect, special, consequential, &lt;BR&gt;incidental, punitive or exemplary related to the Software or this License, to &lt;BR&gt;the maximum extent the law permits, no matter what legal theory it’s based &lt;BR&gt;on. Also, you must pass this limitation of liability on whenever you &lt;BR&gt;distribute the Software. &lt;/P&gt;
&lt;P&gt;9. Patents.&lt;BR&gt;If you sue anyone over patents that you think may apply to the Software &lt;BR&gt;for a person's use of the Software, your license to the Software ends &lt;BR&gt;automatically. &lt;/P&gt;
&lt;P&gt;The patent rights, if any, licensed hereunder only apply to the Software, &lt;BR&gt;not to any derivative works you make. &lt;/P&gt;
&lt;P&gt;10. Termination.&lt;BR&gt;Your rights under this License end automatically if you breach it in any way.&lt;/P&gt;
&lt;P&gt;Rockford Lhotka reserves the right to release the Software under different &lt;BR&gt;license terms or to stop distributing the Software at any time. Such an &lt;BR&gt;election will not serve to withdraw this Agreement, and this Agreement will &lt;BR&gt;continue in full force and effect unless terminated as stated above.&lt;/P&gt;
&lt;P&gt;11. Governing Law.&lt;BR&gt;This Agreement shall be construed and enforced in accordance with the laws &lt;BR&gt;of the state of Minnesota, USA.&lt;/P&gt;
&lt;P&gt;12. No Assignment.&lt;BR&gt;Neither this Agreement nor any interest in this Agreement may be assigned &lt;BR&gt;by Licensee without the prior express written approval of Developer.&lt;/P&gt;
&lt;P&gt;13. Final Agreement.&lt;BR&gt;This Agreement terminates and supersedes all prior understandings or &lt;BR&gt;agreements on the subject matter hereof.&amp;nbsp; This Agreement may be modified &lt;BR&gt;only by a further writing that is duly executed by both parties.&lt;/P&gt;
&lt;P&gt;14. Severability.&lt;BR&gt;If any term of this Agreement is held by a court of competent jurisdiction &lt;BR&gt;to be invalid or unenforceable, then this Agreement, including all of the &lt;BR&gt;remaining terms, will remain in full force and effect as if such invalid &lt;BR&gt;or unenforceable term had never been included.&lt;/P&gt;
&lt;P&gt;15. Headings.&lt;BR&gt;Headings used in this Agreement are provided for convenience only and shall &lt;BR&gt;not be used to construe meaning or intent.&lt;BR&gt;&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA .NET</category>  </item>  <item>   <title>Known issues in version 3.6.x</title>   <guid>http://www.lhotka.net/article.aspx?id=19cb39a4-e498-4900-9f56-5b7051a269f0</guid>   <link>http://www.lhotka.net/article.aspx?id=19cb39a4-e498-4900-9f56-5b7051a269f0</link>   <pubDate>Wed, 09 Jul 2008 17:46:58 GMT</pubDate>   <description>&lt;P&gt;There are no known issues at this time.&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA Light</category>  </item>  <item>   <title>CSLA .NET Roadmap</title>   <guid>http://www.lhotka.net/article.aspx?id=6ae50dc6-7fa5-4568-ab53-05869f0b4dd4</guid>   <link>http://www.lhotka.net/article.aspx?id=6ae50dc6-7fa5-4568-ab53-05869f0b4dd4</link>   <pubDate>Mon, 07 Jul 2008 05:00:00 GMT</pubDate>   <description>&lt;P&gt;From time to time people ask about the future of CSLA .NET. The following is my current best estimate in terms of plans:&lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Release (est)&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;CSLA .NET 3.5&lt;/TD&gt;
&lt;TD&gt;Released&lt;/TD&gt;
&lt;TD&gt;Integrates support for .NET 3.5 - specifically LINQ, and Visual Studio 2008.&lt;BR&gt;Also includes many items from the wish list. See the &lt;A href=&quot;/Article.aspx?area=4&amp;amp;id=71994329-d218-4c02-a4d4-ce5ea4ac8d4b&quot;&gt;change log&lt;/A&gt; for details.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CSLA Light&lt;/TD&gt;
&lt;TD&gt;Q3 2008&lt;/TD&gt;
&lt;TD&gt;Client-only version of CSLA that can run inside the Silverlight&amp;nbsp;2.0 sandbox/environment. Will interoperate with CSLA .NET 3.6 on an ASP.NET server.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CSLA .NET 3.6&lt;/TD&gt;
&lt;TD&gt;Q3 2008&lt;/TD&gt;
&lt;TD&gt;Update to version 3.5 that will incorporate support for CSLA Light. This version will probably also include enhanced support for indexed LINQ queries against collections and possibly other general enhancements.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;EM&gt;Expert C# 2008 Business Objects&lt;/EM&gt;&lt;/TD&gt;
&lt;TD&gt;Late 2008&lt;/TD&gt;
&lt;TD&gt;The third edition of my &lt;EM&gt;Expert Business Objects&lt;/EM&gt; book series, covering CSLA .NET 3.5: both the creation of the framework and how to use it to build applications.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;EM&gt;Expert VB 2008 Business Objects&lt;/EM&gt;&lt;/TD&gt;
&lt;TD&gt;Q1 2009&lt;/TD&gt;
&lt;TD&gt;The third edition of my &lt;EM&gt;Expert Business Objects&lt;/EM&gt; book series, covering CSLA .NET 3.5: both the creation of the framework and how to use it to build applications.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;EM&gt;Using CSLA Light 3.6&lt;/EM&gt;&lt;/TD&gt;
&lt;TD&gt;Q2 2009&lt;/TD&gt;
&lt;TD&gt;An ebook covering the use of CSLA Light to create Silverlight applications.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;EM&gt;CSLA .NET and Windows Forms&lt;/EM&gt;&lt;/TD&gt;
&lt;TD&gt;Q2 2009&lt;/TD&gt;
&lt;TD&gt;An ebook covering the use of CSLA .NET 3.6 when creating a Windows Forms UI.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;EM&gt;CSLA .NET and ASP.NET MVC&lt;/EM&gt;&lt;/TD&gt;
&lt;TD&gt;Q3 2009&lt;/TD&gt;
&lt;TD&gt;An ebook covering the use of CSLA .NET 3.6 when creating an ASP.NET MVC UI.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Please note that nothing here is a guarantee or promise of future releases. The content and version numbers may change based on many factors. What you see here reflects my current thinking only.&lt;/P&gt;</description>   <source url="http://www.lhotka.net">Rockford Lhotka</source>   <category>CSLA .NET</category>  </item>  <item>   <title>Known issues in version 3.6.x</title>   <guid>http://www.lhotka.net/article.aspx?id=a00d1241-c3b6-4d2e-a585-c6a458f91459</guid>   <link>http://www.lhotka.net/article.aspx?id=a00d1241-c3b6-4d2e-a585-c6a458f91459</link>   <pubDate>Thu, 03 Jul 2008 14:39:33 GMT</pubDate>   <description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;This document is the list of known issues in CSLA .NET 3.6.x. &lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt&quot;&gt;&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;TABLE class=MsoTable3DFx3 style=&quot;BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 480; mso-padding-alt: 0in 5.4pt 0in 5.4pt&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 106.85pt; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent; mso-border-right-alt: solid gray .75pt&quot; vAlign=top width=142&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5&quot;&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT face=&quot;Courier New&quot;&gt;ReadOnlyListBase&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 335.95pt; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent; mso-border-right-alt: solid white .75pt&quot; vAlign=top width=448&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 9&quot;&gt;&lt;SPAN style=&quot;mso-bidi-font-weight: bold&quot;&gt;There is a known issue where the Visual Studio debugger will “lock up” (actually it will eventually crash due to a stack overflow) when an exception is thrown in the &lt;/SPAN&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;DataPortal_Fetch()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-weight: bold&quot;&gt; of a subclass of &lt;/SPAN&gt;&lt;SPAN class=CodeInline&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Times New Roman'&quot;&gt;&lt;FONT face=&quot;Courier New&quot; color=#008000&gt;ReadOnlyListBase&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-weight: bold&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Mso