This document is the change log for CSLA 4 version 4.0.0.
CSLA 4 includes support for .NET (Windows) and Silverlight.
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 4.0.0-100723:
LoadProperty (100722)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=772
Apply the non-generic LoadProperty() change to CommandBase and ReadOnlyBase.
RC1 4.0.0-100719:
Samples (100719)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=748
Removed all samples that won’t be updated for CSLA 4 to avoid confusion. Some of these samples may come back in the future as time permits, but for now only samples that build in CSLA 4 will remain.
RuleUri (100719)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=802
Add Arguments property.
EditableRootListBase (100719) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=769
Renamed ERLB to DynamicListBase and DynamicBindingListBase. Fix base class types for WPF/SL as well as Windows Forms. Fix AddNewCore() on .NET side so it returns type T instead of object.
Snippets/Templates (100716)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=799
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=798
Add and update some snippets and templates for VB and C#.
LoadProperty (100715)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=772
Undo the Beta 3 change to the non-generic LoadProperty() method so the non-generic LoadProperty() no longer calls the property setter. Calling the property setter is problematic, because it forces properties to have setters, and forces Silverlight setters to be public.
The new implementation of the non-generic LoadProperty() now uses reflection to directly invoke the generic LoadProperty() method. This ensures that the non-generic behavior is the same as the generic behavior, and doesn’t require that properties have a setter.
Child data portal (100715)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=738
Fix null reference issue in the exception handling code in child data portal.
Dependency rule (100714)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=801
Constructor for Dependency rule now accepts a list of affected properties, allowing for one-to-many dependencies to be established with a single rule.
BusinessRules (100719)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=796
If a rule throws an exception, BusinessRules now includes the rule:// URI as part of the description (along with the exception Message property) to make it easier to determine which rule threw the exception.
RC0 4.0.0-100708:
Snippets/templates (100708)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=795
Update snippets and templates for CSLA 4 changes.
Data portal exceptions (100708)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=794
Fix bug with data portal exception handling and SilverlightRequestProcessor.
CslaModelBinder (100708)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=790
Add support for block mode updates and make that the default. CslaModelBinder now suppresses rule checking, allows the model properties to be updated, then runs all object rules before saving the object.
This involved adding an ICheckRules interface to CSLA, so other UI frameworks can also use this interface to suppress/resume/check rules.
Business rules (100707)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=793
Add Dependency rule to enable reverse dependent properties.
BusinessPrincipalBase/CslaPrincipal (100707) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=787
Rename BusinessPrincipalBase to CslaPrincipal.
BusinessBase (100705)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=788
Remove non-async DataPortal_Create() method from Silverlight implementation.
BusinessRules (100705)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=792
Fix bug in GetFirstMessage().
BusinessListBase (100704)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=25
Throw an exception when a non-child object is added to a BusinessListBase.
PropertyStatus (100629)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=785
Fix issue with PropertyStatus not displaying/refreshing properly.
ObjectStatus (100629) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=786
Remove ObjectStatus.
RuleUri (100625)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=784
Encode path data to handle special characters.
Beta 3 4.0.0-100625:
CslaDataProvider (100625) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=783
The RemoveItem() method now accepts two parameters (sender, ExecuteEventArgs) so it is compatible with TriggerAction and InvokeMethod.
RuleUri (100625)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=782
Fix an issue where a long type name would cause System.Uri to fail. On .NET it has a limit of around 256 characters, and on Silverlight just 63 characters for each part of a path name. The fix breaks any long type name into 63 character parts behind the scenes, allowing System.Uri to work as expected.
LoadProperty (100624) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=772
The non-generic LoadProperty() method now always invokes the property setter, so it indirectly always uses the generic LoadProperty() method. This means there is complete parity between the two implementations, but it does mean there’s slightly more overhead with the non-generic version of the method. In the case of BusinessBase, the property setter is invoked within a BypassPropertyChecks block, so it does a load operation, not a set operation.
IsBusy/IsSelfBusy/IsPropertyBusy (100624)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=780
These three property/methods are now virtual.
Async rules (100623)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=779
Provide the Target property to an async rule if the rule explicitly sets a ProvideTargetWhenAsync property to true. Obviously if the rule uses the Target property on a background thread that’ll cause major problems, but that is just bad code and the developer deserves what they get.
This does have some interesting ramifications for rule chaining. If async rules chain to other rules (sync or async), the Target value is only provided through the chain when the parent async rules (all the way up the chain) have ProvideTargetWhenAsync set to true.
ASP.NET MVC Authorization (100623)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=778
Added HasPermissionAttribute and a set of HasPermission Html extension methods to simplify applying CSLA per-type authorization rules to controller actions and code in a view.
ASP.NET MVC ViewModelBase (100623)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=766
Added a ViewModelBase class to provide a basic implementation of IViewModel.
BusinessRule (100623)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=777
Remove unused default properties from the base class.
RuleContext (100623)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=776
Add a public constructor to enable simpler unit testing of rules.
Authorization (100616)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=773
CanReadProperty/CanWriteProperty now call FirstOrDefault.
File headers (100614)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=717
All code files now contain a standard copyright header.
EditableRootListBase (100606)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=765
EditableRootListBase now has a default AddNewCore() implementation.
Data Portal (100603)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=679
It is now possible to change the server exception before it is wrapped in a DataPortalException and returned to the client. This is done by implementing IDataPortalExceptionInspector and using a config entry to tell the data portal to invoke your implementation.
There is now also a GenericBusinessException type you can use to contain information about non-serializable exception objects that might be thrown by some components on the server. Remember that all exception objects must be serializable to flow back through the data portal to the client.
Field manager (100601)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=768
Fix bug with RelationshipTypes enum.
TriggerAction (100601)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=767
Fix issue with setting TriggerEvent property.
PropertyStatus (100601) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=764
Remove TargetControl property. Instead of using TargetControl, you should have your UI control bind to the properties of the PropertyStatus control to do things like enable/disable, or change visibility.
CslaModelBinder (100526)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=766
Fix duplicate validation error message issue. This also involved adding a new IViewModel interface that a viewmodel should implement so CslaModelBinder can differentiate between a viewmodel and other types of object.
Authorization (100525)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=763
Add a TargetType property to AuthorizationContext so a rule will always have access to the type of the target business object.
Beta 2 4.0.0-100528:
INotifyDataErrorInfo (100520)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=664
Add INotifyDataErrorInfo implementation to BusinessBase for Silverlight.
Base classes (100520)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=758
Make sure base classes implement Initialize() and OnDeserialized().
BusinessRules (100520)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=762
Fix bug with SyncRoot not being set after deserialization.
Common rules (100520)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=761
Add Severity property to common rules.
PrivateField relationship type (100519)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=756
Add new PrivateField relationship type to IPropertyInfo so property metadata can know that a property has a private backing field. This change includes making ReadProperty() and LoadProperty() automatically get/set these values using reflection.
BusinessRule (100519)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=759
Make IsAsync a virtual property, so it is possible for a rule to adjust whether it is sync or async based on LogicalExecutionLocation.
DataAnnotations (100515)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=755
Fix property name display for broken validation rules.
BusinessBase (100514)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=751
Add missing Display attribute on IsSelfBusy property.
ReadOnlyBase (100514)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=753
Fix issue with MarkIdle() method.
MinLength rule (100512)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=749
Fix issue with MinLength rule.
ReadProperty/ManagedObjectBase (100511)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=747
Fix issue where ReadProperty() wasn’t properly using default values.
Business rules (100510)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=745
Ensure StopProcessing works with successful rules.
Templates (100510)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=746
Update templates for CSLA 4.
Business rules (100507)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=744
Add SuppressRuleChecking back into rule system.
Beta 1 4.0.0-100503:
PropertyStatus (100430)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=729
Enhance PropertyStatus to make it easier to subclass the control for customization.
EditableRootListBase (100428)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=535
Root objects are now marked as being busy while they are being saved.
Silverlight data portal (100428)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=736
Add config option so it is possible to prevent the data portal from sending the client-side principal object to the server on each data portal call.
Authorization Rules (100427) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=13
Redesign and implement the authorization rules system.
MethodInfo (100424)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=77
Add a MethodInfo type, which implements Csla.Core.IMemberInfo. This is like PropertyInfo<T>, but for methods, and is used by CanExecuteMethod().
This also means there are now RegisterMethod() methods in BusinessBase and ReadOnlyBase.
ViewModelBase (100421)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=730
Add some pre-processing methods to ViewModelBase.
Execute control (100421) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=735
Removed the Execute controls for WPF and Silverlight. Blend 4 has a behavior that does the same thing, so it is better to switch to the Microsoft functionality.
Preview 4.0.0-100416:
Csla.Xaml.Silverlight (100416) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=734
Move the Csla.Xaml files out of Csla.Silverlight and into Csla.Xaml.Silverlight. To use the Silverlight controls in Csla.Xaml it is now necessary to reference the Csla.Xaml.dll file from \bin\...\Silverlight.
This eliminates the System.Windows.Interactivity.dll reference from core CSLA.
EditableRootListBase (100414)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=676
Fix issue with undo.
SetProperty/LoadProperty (100413)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=731
SetProperty() and LoadProperty() now use ReferenceEquals() to determine equality for child objects.
Business and validation rules (100411)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=623
Continued work and stabilization of the new rules system.
ReadProperty/LoadProperty (100407)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=384
The non-generic ReadProperty() and LoadProperty() methods are now virtual in BusinessBase, allowing a class to override them to handle private backing fields.
Preview 4.0.0-100405:
Setup program (100405)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=714
This release is available as a setup program instead of a regular zip archive.
Business and validation rules (100405) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=623
The new business and validation rules subsystem is in this release. This is a major change, and is described in this blog post.
IDataErrorInfo (100401)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=722
Add IDataErrorInfo support for Silverlight, now that Silverlight 4 supports the interface.
Data portal and enum values (100326)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=723
It is now possible to pass enum values through the Silverlight data portal.
.NET 4 Client Profile (100326)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=727
Removed the csla.client project and changed csla.core to target the .NET 4 client profile. As a result, csla.core is now named Csla, and it builds into \bin\Client. This assembly works in the client profile and full .NET and so is the one Csla.dll necessary for core CSLA functionality on the .NET platform.
The Csla.Silverlight project is unaffected and continues to build Csla.dll in \bin\Silverlight.
Data portal (100324)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=591
The .NET WcfProxy data portal channel will now use the CslaDataPortalUrl config value by default. It also defaults to using wsHttpBinding with maxed out message size limits.
CommandBase (100323) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=724
CommandBase now implements IClonable, which means it works with automatic cloning when using a local data portal deployment. This brings command objects into line with other object types.
RegisterProperty (100316)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=180
RegisterProperty() now picks up friendly names for properties from any display attributes (from DataAnnotations or System.ComponentModel in that order) if the attributes are present. This eliminates the need to supply a friendly name on the RegisterProperty() call itself.
Note: passing a null to RegisterProperty() for a friendly name means RegisterProperty() will look for the attributes, and fall back to using the property name if the attributes are not present.
Data portal impersonation (100314)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=719
Add attribute to allow impersonation to work through the WCF data portal channel.
Custom data portal channels in SL (100314)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=337
Alter the Silverlight data portal so it is possible to create custom proxy/host channels for the data portal that aren’t based directly on WcfProxy. In other words you can now build a proxy/host for something other than WCF, or to use third party WCF bindings.
Compressed data portal sample (100314)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=337
Add a sample showing how to apply compression to a .NET data portal channel in a way that is similar to how compression can be plugged into the Silverlight data portal.
Generic data portal (100308) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=113
Removed non-generic DataPortal methods. As a result, it is no longer necessary to pass the business object type in the criteria, so any serializable value (object or primitive) can now be used as a criteria value. For example:
var cust = DataPortal.Fetch<Customer>(123);
On Silverlight the criteria value must be serializable with the MobileFormatter, and so must be an IMobileObject or primitive type (int, string, Guid, etc).
TriggerAction control (100308)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=705
Added a TriggerAction control, which is much like InvokeMethod or Execute, but works using drag-and-drop from the Toolbox in Silverlight and WPF, so it is friendly to use with the VS10 designer.
Additionally, it is possible to have numerous TriggerAction controls attached to one UI control in the case that you want to handle several UI control events.
LinqObservableCollection (100305) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=673
Removed LinqBindingList and the related LINQ to CSLA functionality from 3.8. This includes removal of indexed lists.
In its place, added LinqObservableCollection and an extension method for any ObservableCollection called ToSyncList(). This extension method creates a LinqObservableCollection that is synchronized to the original list.
This is an explicit action, and so is quite different from the previous implementation. In this new model you do your query as normal, and then sync the results of the query (or the query itself) to the original list using ToSyncList(). This provides for a lot more control over the process and avoids the numerous unexpected side-effects of the previous model.
DataAnnotations in .NET (100305)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=690
DataAnnotations attributes are now available on the .NET side of CSLA, because the assembly is now included in the client profile as of .NET 4 RC.
Paged list sample (100305)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=716
Added a sample showing how to create an asynchronously loading paged list object. This is particularly useful in Silverlight, but works in WPF and Windows Forms as well.
RegEx rule (100305) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=460
Remove regex expressions from CSLA .NET. The RegEx rule is still there, but no longer includes pre-defined regex expressions.
MethodCaller (100303)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=550
MethodCaller on Silverlight now uses lambda expressions instead of reflection to dynamically invoke methods.
PropertyStatus/BusyStatus (100303)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=701
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=693
Fix issues that were blocking the use of these controls in WPF.
CslaModelBinder (100226)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=649
Add a CreateModel() implementation to CslaModelBinder so it can automatically create business object instances.
CommandBase, CriteriaBase, CslaIdentityBase (100226) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=713
Changed CommandBase and CriteriaBase to be generic types. Added CslaIdentityBase as a generic type, which is the base class for CslaIdentity. While this is a pretty big breaking change, it means that the RegisterProperty() syntax is now the same for all base class types, which is very helpful.
Data portal XAML design time (100226) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=696
Removed all XAML design time support concepts from the data portal.
TriggerAction (100224)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=705
Add TriggerAction control, which works like InvokeMethod or Execute, but is VS10 designer-friendly.
Data portal (100221)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=228
Optimize creation of data portal proxy object. Also added CslaDataPortalProxyFactory config setting and IDataPortalProxyFactory interface to open up how proxy objects are created.
Visual Studio 2010 RC (100219)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=708
Various updates for compatibility with VS10 RC.
ViewModelBase (Silverlight) (100218)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=709
The Silverlight ViewModelBase class now inherits from DependencyObject instead of FrameworkElement, so it matches the WPF implementation and is more flexible.
ViewModel (100218)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=703
Added IViewModel interface to make viewmodel objects polymorphic.
Wpf\Authorizer (100216) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=706
Remove the Authorizer control.
PropertyChanged events (100216) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=704
Make Xaml the default behavior for PropertyChanged notification
PropertyInfo<T> (100207)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=680
Changed scope of Index property so it is only accessible through interface Core.IPropertyInfo. This allows people to more safely make their IPropertyInfo objects public in scope.
FilteredBindingList (100204)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=31
Added overload for ApplySort that accepts string PropertyName and ListSortDirection.
MethodCaller (100202)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=227
CallByName() now uses Csla.Reflection, and so gets the benefit of the dynamic lambda creation used to optimize performance (actually avoiding most reflection).
SetParent() method (100202)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=683
SetParent() is now a virtual method.
Pre-Release 4.0.0-100201:
ViewModelBase (100129)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=694
Add Browsable(false) to properties of object that shouldn’t be visible in Data Sources window.
Parent property (100129)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=689
Parent properties are now marked as Browsable(false) so they don’t appear in the Data Sources window and are ignored by DataMapper.
Data Portal (100126) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=560
When using an object factory with a command object, the data portal will now call an Execute() method instead of Update().
Windows Forms data binding (100123)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=241
Enhance data binding support so a business object can be bound to multiple BindingSource controls (and therefore forms) at the same time. There’s a new MultipleBindingSources sample that illustrates how this works.
BindingSourceRefresh (100119)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=686
Fix issue with .NET 4.0 client profile and the way the control binds itself to the host. This was necessary to make the control work in .NET 4.0.
BusinessBase (100119)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=376
OnPropertyChanged() now has an overload that accepts a PropertyInfo<T>.
SL FieldData (100119)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=677
Silverlight FieldData.IsDirty is now virtual.
SL data portal (100115)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=536
Client culture values now flow to server through data portal from Silverlight client.
SmartDate (100113)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=546
SmartDate tests changed to work better internationally.
SortedBindingList (100111)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=461
SortedBindingList throws an exception if the sort-by property name doesn’t exist.
BusinessListBase, BusinessBindingListBase (100105)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=678
Add a default implementation of AddNewCore() that uses DataPortal.CreateChild() to create an instance of the child object.
Pre-Release 4.0.0-100108:
BusinessListBase (100107)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=678
Add default implementation of AddNewCore() that uses DataPortal.CreateChild() to create an instance of a new child object. You can still override this method to do your own thing, but the default is now to just work – oh, and AllowNew now defaults to true of course.
BusinessListBase, BusinessBindingListBase (091218) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=336
BusinessListBase now inherits from ObservableCollection<T> - there’s a whole new inheritance hierarchy to support this. The behavior of the new BusinessListBase should be functionally comparable to previous versions, but it now raises CollectionChanged instead of ListChanged, and now integrates nicely with WPF, but won’t work properly with Windows Forms.
BusinessBindingListBase is the old BLB, just renamed. It still follows the same inheritance hierarchy it did before, so if you use Windows Forms you should be able to just change your business class to inherit from BBLB and it should continue to work.
On Silverlight, BBLB is just a subclass of BLB – they both work the same way. I added BBLB to Silverlight to maintain parity between the platforms, but generally speaking you should use BLB instead of BBLB unless you are reusing an existing BBLB collection from existing .NET Windows Forms code.
Csla.test (091204) Breaking change (build/test)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=662
Modified the unit test projects to work with mstest instead of nunit. They may still work with nunit, but I will be using mstest going forward. As of this date 505 of 517 tests pass, so there’s a little work to be done.
Flatten folder structure (091204) Breaking change (build)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=661
Bring the older folders (like Csla.core) up a level – essentially eliminate the intermediate \Csla\ folder and intermediate sln files.
Parent property (BusinessBase/BusinessListBase) (091203)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=661
The Parent property is now public scope.
MobileFactory (091203) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=661
Move MobileFactoryAttribute to the Csla.Server namespace/folder.
Silverlight 4 (091125) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=659
Update CSLA .NET for Silverlight and its test project to build targeting Silverlight 4 PDC beta.
Csla.Xaml namespace (091105) Breaking change
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=636
Following Microsoft’s general lead, the old Csla.Wpf and Csla.Silverlight namespaces have been changed to Csla.Xaml. This means all XAML-oriented types from WPF and Silverlight are now all in the same Csla.Xaml namespace, providing a higher level of consistency between the two platforms.
Solution structure (091105, 091203) Breaking change (build)
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=629
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=661
Rearrange the solution structure and svn repository structure as follows:
\Bin\...
\Samples\CslaNet\...
\Samples\CslaLight\...
\Source\Csla.client\...
\Source\Csla.core\...
\Source\Csla.Silverlight\...
\Source\Csla.Silverlight.test\...
\Source\Csla.test\...
\Source\Csla.Web\...
\Source\Csla.Web.Mvc\...
\Source\Csla.Windows\...
\Source\Csla.Xaml\...
\Source\Dependencies\...
This puts the server/core (full .NET), client (.NET client profile) and Silverlight projects as top-level elements in the source folder, and arranges the samples folder as a peer. It also puts the UX technologies in their own assemblies per-technology.
There’s also a top-level csla.all.sln file that opens all three source projects so it is easy to open and build all three flavors of CSLA .NET.
And a csla.test.sln file that opens the CSLA .NET for Windows projects with the corresponding unit test projects.