Rockford Lhotka
    CTO at Magenic
    Author, speaker, software architect
    Creator of the CSLA .NET framework

Home
Blog
CSLA .NET
Magenic
Speaking
Publications
About me
Contact me

Login

Version 3.8.0 change log

 

This document is the change log for version 3.8.0 of CSLA .NET for Windows.

 

For a more complete list of changes, go to http://www.lhotka.net/cslabugs, select “all issues” and filter the status to “closed” and/or “checked in”.

 

Click here for a list of known issues with this version.

 

Release 3.8.0-091105:

 

LINQ to CSLA (091105)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=387

Check for null property value before trying to index that value.

 

ProjectTrackerWithObjectFactory (091105)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=633

Thanks to Jonny Bekkum there’s a new ProjectTracker sample that uses the ObjectFactory data access model, and has a generally more consistent coding model overall. This is perhaps more of a how-to reference app than an example showing all the various features available in CSLA .NET.

 

ViewModelBase (091105)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=634

The OnModelChanged() parameters are now strongly typed.

 

Test project warnings (091104)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=631

Eliminated warnings in the unit/integration test projects.

 

XML comments (091104)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=272

All CSLA .NET framework code should now be commented.

 

Validation (091103)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=630

ValidationComplete event is now raised immediately upon completion of all sync rules if there are no async rules. Otherwise it is still raised when all async rules complete as was the case prior to this change.

 

Pre-Release 3.8.0-091030:

 

InvokeMethod (091030)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=628

Hooking PropertyChanged on the target object (DataContext or whatever) AND hooking the trigger event off the UI control turns out to be essentially impossible. The implementation we've had couldn't handle the case where the DataContext changed during the lifetime of the form, and trying to address that issue would have caused a memory leak.

 

In the end, it is almost certainly better if the UI control bind its IsEnabled (or whatever) property explicitly to control the visuals anyway, as that's more explicit and flexible.

 

Unfortunately this is a breaking change, because ManualEnableControl is now gone, and InvokeMethod now always operates as though that property were set to false.

 

CslaModelBinder (091027)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=620

Added a basic ASP.NET MVC model binder to the Csla.Web.Mvc namespace. This is necessary for objects that use data annotations validation attributes, because the default model binder honors both validation attributes and IDataErrorInfo as separate concerns, but CSLA reflects broken attributes through IDEI – resulting in validation errors appearing twice in the UI. The CslaModelBinder does the right thing, so validation errors only appear once, and so multiple validation issues with a single property are shown to the user.

 

ViewModelBase (091026)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=619

Add protected method OnModelChanged() so a subclass can hook events from the model as needed.

 

ViewModelBase (091026)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=617

Fix issue where the Model property being changed didn’t trigger proper notification to the UI.

 

InvokeMethod (091026)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=618

Fix issue where the Target property wasn’t always properly overriding the DataContext value.

 

Pre-Release 3.8.0-091025:

 

BusyAnimation (091025)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=596

Fixed issue with memory leak when using BusyAnimation (and therefore PropertyStatus).

 

BusinessBase (091016)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=601

Fixed issue where busy changed wasn’t being raised properly in some cases.

 

Samples (091022)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=587

Updated for 3.8: ProjectTrackercs, ProjectTrackervb, AsyncDataPortalWinTest, AsyncDataPortalWpfTest, WpfDesignTimeSupportDemo, MVVMexperimentWpf

 

Samples\ProjectTracker (091022)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=587

Added an ASP.NET MVC UI project running on top of the business library. This project is not yet complete, but does display and edit basic Project data and so shows the basics of using ASP.NET MVC over a CSLA .NET business layer.

 

Samples\ProjectTracker (091022)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=587

Removed “legacy” projects from solution. They are still in the download, just not in the solution. This includes the asmx web service and client along with the Remoting, Enterprise Services and asmx data portal hosts.

 

Snippets (091022)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=604

Fix issue with SmartDate snippet.

 

InvokeMethod and Execute (091022)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=605

InvokeMethod and Execute now support exactly two method signatures for target methods. A target method may have 0 or 2 parameters. If the method has 2 parameters, the method must follow this signature:

 

public void Method(object sender, ExecuteEventArgs e)

 

This is a breaking change for InvokeMethod from previous 3.8 releases, because the 1 and 3 parameter options have been eliminated. This is an enhancement for Execute because the 0 parameter option has been added.

 

ViewModelBase (091022)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=606

Added OnError() method and ErrorOccurred event to ViewModelBase. OnError() is invoked when a non-null value is set in the Error property, and OnError() raises the ErrorOccurred event. This simplifies code in the UI or viewmodel subclass when an error needs to be handled.

 

InvokeMethod (091020)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=593

When InvokeMethod calls a two parameter target method, the parameters are now (object, ExecuteEventArgs) to match how Execute works with target methods.

 

ViewModel (091020)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=593

Remove overloads of public methods, leaving only the sender/args versions that work with both Execute and InvokeMethod.

 

ViewModelBase (091020)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=593

Add sync versions of refresh, save and addnew operations for WPF. The async refresh and save behaviors are available in both WPF and Silverlight. The async methods now start with “Begin” instead of “Do”, which is incompatible with Beta 1.

 

Interactivity assembly (091019)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=603

System.Windows.Interactivity assembly is now referenced from a Dependencies folder in the CSLA .NET folder structure. This has the advantage that you don’t need to install the Expression Blend 3 SDK to build CSLA .NET. This has the disadvantage that you lose all localization and integrated help for the assembly. If you need localization or integrated help you’ll need to install the Blend SDK and change the assembly reference to pull the DLL from the SDK install location.

 

svn repository structure (091018)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=592

CSLA .NET 3.8.x is now located in

svn://svn.lhotka.net/csla/core/branches/V3-8-x

 

The /core/trunk folder is now the working folder for version 4.0.0.

 

Resources (091017)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=588

Changed the scope of the resources to be public so they can be accessed by other assemblies.

 

ViewModel (090917)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=526

Substantial changes to ViewModelBase to bring it in line with the functionality provided by CslaDataProvider. At this point the ViewModelBase and ViewModel properties and methods should offer the same features as the Silverlight CslaDataProvider control.

 

Pre-Release 3.8.0-091003:

 

Validation (090930)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=578

Add support for the data annotation attributes from System.ComponentModel.DataAnnotations. When validation annotation attributes are applied to business object properties, they are now incorporated into the CSLA .NET validation subsystem as business rules, and are executed as priority 0 rules automatically.

 

Wpf\PropertyStatus (090930)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=492

Bring the behavior of PropertyStatus up to date with Silverlight. This means the Property property is now bindable, and the Target property is renamed to TargetControl. This is a breaking change.

 

Pre-Release 3.8.0-090929:

 

MobileFormatter (090929)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=549

Add instance level cache of Type objects during deserialization as a performance optimization.

 

ViewModel (090929)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=526

Added new ViewModelBase and ViewModel classes to Csla.Wpf that can be used to easily create typed ViewModel objects for CSLA .NET Model objects.

 

Execute trigger action (090929)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=521

Added an Execute trigger action that can be used to invoke methods on the DataContext when an event occurs on the associated control. This uses the new System.Windows.Interactivity functionality that comes with Expression Blend 3.

 

For example:

 

      <TextBox Name="NewIdTextBox" Width="150" Margin="5"/>

      <Button Content="Refresh"

              Tag="{Binding ElementName=NewIdTextBox, Path=Text}">

        <i:Interaction.Triggers>

          <i:EventTrigger EventName="Click">

            <csla:Execute MethodName="Load" />

          </i:EventTrigger>

        </i:Interaction.Triggers>

      </Button>

 

Field Manager/PropertyInfo<T> (090928)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=563

Add Type parameter to Create() methods so a PropertyInfo factory has access to the business object type that declares the property.

 

Pre-Release 3.8.0-090913:

 

Field Manager/PropertyInfo<T> (090911)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=563

Add Csla.Core.IPropertyInfoFactory, which can be implemented to provide a new factory object to create PropertyInfo<T> instances.

 

Specify that your type should be used as a factory with the CslaPropertyInfoFactory config setting (provide assembly qualified type name) or by setting the Csla.Core.FieldManager.PropertyInfoFactory.Factory property to an instance of your factory object.

 

This is necessary to support the scenario where you implement a custom FieldData<T> subclass, and then a custom PropertyInfo<T> subclass, and you want to use the lambda expression overloads of RegisterProperty(). In that case, the RegisterProperty() implementation creates the instance of PropertyInfo<T> on your behalf, and this new factory scheme allows you to have it create your own subclass of PropertyInfo<T>.

 

FieldData (090910)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=562

Mark the MarkClean() method as virtual so a subclass can more easily manage the dirty status.

 

CslaDataProvider (090826)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=534

Fix bug where OnQueryFinished() overrides weren’t called correctly.

 

Pre-Release 3.8.0-090814:

 

MobileFormatter (090811)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=500

Enable the use of binary XML serialization. This is now the default option. On the SL side, set the MobileFormatter.UseBinaryXml property to switch back to text XML. On the .NET side use the CslaUseBinaryXml setting in appSettings to use text XML.

 

PropertyStatus (090731)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=472

Removed the Source property. The control now binds to the DataContext, whether set explicitly on the control, or on a containing control just like any other control. This is a breaking change.

 

InvokeMethod (090731)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=470

Fixed a bug in MethodParameter that was blocking binding of arbitrary types, now this works:

 

      <ListBox ItemsSource="{Binding Path=Model}"

               ItemTemplate="{StaticResource DataList}"

               csla:InvokeMethod.TriggerEvent="SelectionChanged"

               csla:InvokeMethod.Target="{Binding}"

               csla:InvokeMethod.MethodName="ShowItem"

               csla:InvokeMethod.MethodParameter=

       "{Binding SelectedItem, RelativeSource={RelativeSource Self}}"

               csla:InvokeMethod.ManualEnableControl="True" />

 

InvokeMethod (090731)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=471

Fix a bug with ManualEnableControl and do a bunch of general code cleanup.

 

InvokeMethod (090730)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=465

InvokeMethod can now pass the sender and EventArgs references through to the target method. The following method signatures are now valid:

 

void TargetMethod()

void TargetMethod(object paramValue)

void TargetMethod(object sender, object paramValue)

void TargetMethod(object sender, EventArgs e, object paramValue)

 

Combined with a change so the trigger event can now be nearly any event, this change makes it possible to route events from a ListBox or other control to a handler so the handler (such as a ViewModel) can react to the user changing a selection or double-clicking or something.

 

InvokeMethod (090730)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=465

If there is no Can___ property for a method, the default is now to enable the UI control, making it easier to use InvokeMethod with arbitrary target objects. This could be a breaking change.

 

InvokeMethod (090730)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=465

Added InvokeMethod to Csla.Wpf to provide better support for MVVM scenarios. While WPF commanding is nice, it isn’t as flexible or easy to use as InvokeMethod.

 

FilteredBindingList/SortedBindingList (090728)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=358

Fixed some synchronization bugs with these types, especially around adding new items to the bottom of a datagrid and then pressing ESC.

 

LINQ to CSLA (090723)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=448

Resolution to certain generic mapping issues in the method mapper caused SelectMany to break... resolved so that SelectMany method mapping is handled similar to GroupJoin, which has same sort of issues with mapping a generic Expression to a similar generic Func.

 

LogicalExecutionLocation (090721)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=395

Store LogicalExecutionLocation in LocalContext so it is safe on the server and in multi-threaded client scenarios.

 

Also change the data portal so LogicalExecutionLocation works with nested calls. To do this I changed SetContext and ClearContext to be instance methods so they can work with an _oldLocation field to handle the nesting.

 

Reflection\MethodCaller (090721)

http://www.lhotka.net/cslabugs/edit_bug.aspx?id=441

Fix an issue where MethodCaller (and therefore the child data portal) was not properly handling array parameters. It should now be possible to pass arrays of values through the child data portal into the Child_XYZ methods.

 

 

(Updated 11/5/2009 8:36:37 PM)