CSLA .NET Feature Wish List
I am now using an issue tracking database for all enhancements, bugs, etc. The list on this page will become increasingly out of date, as I'm no longer maintaining it - but I'm leaving it temporarily for reference.
Please refer to http://www.lhotka.net/cslabugs/bugs.aspx for up to date information. Make sure to select the "wish list" option in the combobox near the upper left corner.
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. (Green items are implemented in the upcoming release, Brown items will not happen, and will be removed from the wish list concurrent with the upcoming release.)
- Alter all reflection code to use Reflection.Emit, dynamic methods and/or to cache results (efficiency improvements)
- In DataMapper
- In UndoableBase
- Enhance DataMapper
- To support datarow types
- To map from IDataReader to object and from object to IDataParameterCollection.
- 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 this thread.
- Enhance data portal
- 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.
- Add a LogicalExecutionLocation property as per this thread.
- 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 "MarkEmpty()" concept.
- Raise pre- and post-call static events on the server-side data portal as per this thread.
- Add a generic overload to Delete() so it matches the other data portal methods.
- Provide some scheme by which different objects (probably identified by a ResourceRequired attribute) can be routed to different data portal servers.
- Authorization
- Add instance level object authorization methods as per this thread.
- Add a delegate scheme by which type-level authorization can be handled by a user-supplied method.
- Validation
- Cascade the friendly name through to brokenrules as per this thread.
- Add priority property to BrokenRule as per this thread.
- Allow the developer to specify the description text for the RegEx rule (and maybe all common rules?)
- Fix potential data formatting bug in DecoratedRuleArgs as per this thread.
- Add an attribute that can be used to decorate rule methods to make them discoverable by external tools (like code generators).
- 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.
-
Add a control to Csla.Web that knows how to render BrokenRulesCollection information into HTML.
- 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 this thread, it would enable some testing scenarios.
- 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.
- CslaDataSource
- Change how CslaDataSource determines whether an object supports insert/update/delete as per this thread.
- 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.
- Add a way for a subclass of ERLB to know when a child has changed as per this thread.
- Fix issues with CslaDataSource and telerik grid control as per this thread.
- Throw an exception in BusinessListBase.InsertItem() if the object being inserted is not a child (IsChild is false) as per this thread.
- Csla.Wpf.Authorizer double-checks some controls, especially nested controls like a combobox. It should not do this.
- Add overloads to the Get methods in SafeDataReader to accept a value to return in case the database value is null as per this thread.
- Fix threading issue with authorization rules discussed in this thread.
- Fix issue with re-adding a deleted item in a BLB as per this thread.
- Add a context/connection manager for ADO.NET EF as per this thread.
- FieldDataManager should have a method to expose whether a field is dirty or not as per this thread.
- Add a Copy() method to BusinessBase (like Clone(), but with ability to change resulting objects). And cascade call through to child objects.
- Investigate possible edit level bug in ProjectTrackervb 3.5.1 (or CSLA .NET) as per this thread and as per this thread.
- Fix possible bug in FilteredBindingList.Clear() as per this thread.
- Fix issue with how WPF 3.5 responds to PropertyChanged events (different from 3.0) as per this thread.
- Fix issue with LINQ to CSLA where 64 bit numeric values cause failure.
- Managed backing fields should have some way to be marked as NotUndoable.
- 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.
- 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.
- 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 this thread.
- GetProperty() is missing an overload: (propertyinfo, field, default, throwException).
(Updated 8/11/2008 12:12:10 PM)