Archive for the ‘New releases’ Category

Update to DomainTypes library

Saturday, February 20th, 2010

The initial release of DomainTypes was heavily influenced by the existing TrueView framework.  After spending much time working with a current client, it’s clear that a more ‘POCO’ approach has significantly more benefits.

Based on my findings (and questions over at StackOverflow), here are the major changes:

  • Refined and enhanced most of the interfaces
  • Removed the concept of persistent and transient classes
  • Domain Services and Application Services have explicit interfaces
  • Domain Objects no longer implement IDependencyAware
  • Removed the ITrackable interface

I’ve also added more examples to clarify how you might use the interfaces.

You can download the code here.  All comments are welcome.

P.S. Note that this library is NOT compatible with the current TrueView framework.  Watch this space for the new version!

http://evolving-software.co.uk/blog/wp-admin/post-new.php

TrueView Maintenance Release 1.3.0908.21

Friday, August 21st, 2009

The latest release has some UI fixes for TrueView, and mapping fixes for DataBridge.  Download it here.

TrueView Fixes

  • UI now shows changes if entities are modified inside constructors
  • Corrected treenode selection when removing a previously selected node
  • Fixed race condition when opening Entity property nodes
  • Entity Property treenode no longer renders with the Entity’s style
  • Fixed window layout for magnetic windows
  • Fixed window positioning when overlaying windows
  • Correctly identifies the top-most window in multi-monitor mode
  • Exceptions when retrieving Summary value are no longer fatal
  • Fixed Search Results window ownership in MyApplication.Load<T>(query, parameters)
  • Shortcut key presses are now handled for multi-monitor mode

Enhancements

  • ‘Short’ values now have smaller widgets (Strings)
  • Improved ‘Version Check’ dialog messages

DataBridge Fixes

  • Corrected writing of Component properties
  • Fixed Foreign Key names for Entity properties of the same type

TrueView Release 1.2.0905.22 – Maintenance release, performance improvements

Friday, May 22nd, 2009

This release has some major UI rendering improvements, and a couple of enhancements to aid usability. TrueView DataBridge also has a couple of small fixes.  Download them here

Enhancements:

  • Drag/drop tip now explains the drop action
  • Drag/drop tip now tries to stay on-screen, regardless of curson position
  • Now allows new entities to be added to unsaved parent entities
  • “Save This” tooltip now shows reason for being disabled (where applicable)
  • Removed duplicate results in Search window
  • Friendly names are now generated for generic lists
  • Improved icons bitmap scaling quality
  • Removed error messages when using IQuerySpecification with FilePersistence provider class

Fixes:

  • UI refresh now updates all Entities
  • Fixed stack overflow when tracking dirty entities in circular object graphs
  • Corrected tracking of entities that are removed from lists
  • Dynamic listbox ensures that property value is automatically loaded
  • Fixed NullReferenceException when pressing Enter in an empty Queries List
  • Fixed DataTimePicker background colour on Windows Vista
  • Removed system beeps when entering/exiting edit controls (NumericUpDown is still a problem)
  • Correct sizing of PropertyGrid columns
  • Corrected enabled state for “Save This” menu item
  • Corrected bold text clipping in Search treeview
  • Allow NHibernate to use reflection-optimizer if configured to do so
  • Menu and toolbar items are now updated if Undo/Redo fails
  • Better alignment of Boolean radio-buttons
  • Better sizing of bitwise(flag) enum listbox
  • String compacting algorithm no longer creates null-terminated strings

Optimisations:

  • Massive improvements to UI rendering performance
  • Reduced startup time in MyApplication.Initialise (i.e. for unit testing)
  • FilePersistence now flushes to disk less frequently
  • Improved string building performance

Known issues:

  • NumericUpDown editor still beeps when Enter is pressed
  • Search Query Editor window doesn’t hide Boolean editors immediately (need to hit Escape twice)

TrueView Release 1.2.0905.02 – Maintenance release (plus a few extras)

Saturday, May 2nd, 2009

The latest maintanance release fixes some glaring errors (sorry!).

The UI has also been updated for better usability – and now supports dynamic drop-down lists using IQuerySpecification.  Read the user guide to learn more.

Enhancements:

  • Moved MDI window toolbar to top (tab-like appearance)
  • MDI window ‘tabs’ now toggle normal/maximised window state
  • Added support for dynamic UI ‘lookup lists’ using IQuerySpecification
  • User is prompted to email errors at shutdown
  • Added “Communication Settings” to Preferences
  • Added online version checking for Trial build
  • Added Vista style TaskDialogs
  • Dirty status is only shown for changed entities
  • Collapsible panel widgets now highlight on mouse-hover
  • Reduced flicker when changing between maximised windows
  • Search “Add” now uses “Query Bookmarks”, which can be viewed after saving
  • Added TransientEntityList class
  • Default settings of AutoSave is now False

Fixes:

  • Corrected UI updates when list Add/Remove is aborted
  • Improved UI refreshing after performing commands
  • Clearing a search form purges the internal cache
  • Corrected Action button panel flow layout when resized
  • Corrected tooltip rendering in Property treenodes
  • Text no longer truncated in Action buttons
  • Corrected MyApplication.IsStarted value
  • Dialogs no longer displayed when Workbench isn’t running (for unit testing)
  • Improved/optimised tracking of dirty entities within deep object graphs
  • Now handles hidden/new properties
  • Reattaches entities to NHibernate ISession before loading properties
  • Improved NHibernate session management during Save operations
  • Corrected ListView sorting for sub-items that are null
  • Corrected ListView header sort icons for Vista
  • Corrected lock-up when tabbing through PropertyGrid controls
  • Corrected validation when dragging items from the Class Library
  • Previous search results are cleared if query returns no matches
  • Corrected “Unit of work” check for method Actions
  • Added sync locking to allow rapid keyboard actions (e.g. keeping a key pressed)
  • Now supports icons named after Interfaces
  • Reset drag/drop label background colour

Optimisations:

  • UI widgets are only refreshed once where possible
  • Reduced amount of redrawing when listviews are refreshed

Known issues:

  • DateTime editor doesn’t change background colour on Vista
  • Preferences Editor doesn’t always render tree nodes

TrueView Release 1.2.0903.01 – Improved user experience

Sunday, March 1st, 2009

Thanks for all you comments. This release is based on your feedback, so please keep sending your comments. Download the latest version here.

Enhancements:

  • Added PropertyGrid editor for unknown types (e.g. structs)
  • Root entities can no longer be explored
  • Top level nodes in Class Library treeview are now consolidated
  • “Enter” now creates a new entity in Class Library
  • Method buttons now have equal sizes
  • Tweaked overall UI appearance (borders, padding, splitters, colours)
  • Vertical splitter is removed if no methods are displayed
  • Save action traces all affected entities
  • Null EntityLists are now rendered with no grid lines
  • Added “About Demo” window
  • Added “Report a bug” option
  • Trace log now saving in Zip compatible format
  • “About” window now shows application information
  • “About” window can be closed using Escape/Enter
  • Failures in Query criteria no longer show dialog boxes (improved usability)
  • Removed “Property was unchanged” message
  • Clicking an empty area of the Actions panel hides Parameters listview
  • “Edit Value” option is only shown in ‘Explorer’ mode

Fixes:

  • Drag/drop now handles null EntityList properties
  • Undo/redo now handles EntityLists
  • Assembly resolve now handles upgrades/downgrades wherever possible
  • Fixed “Collection modified exception” when resolving entity relationships
  • Correction when identifying all parent entities
  • Setting null values no longer attempts to create internal associations
  • Corrected “Divide by zero” exception in memory calculation (for Vista64)
  • Exceptions when invoking actions are only reported once
  • Removing new instances from lists no longer causes ‘phantom’ dirty status
  • Corrected “Paste new copy” functionality
  • Action (method) button panel now expands correctly
  • Application menu/toolbar are refreshed after clipboard operations
  • Application menu/toolbar are refreshed after listview selection changes
  • Corrected display of confirmation dialogs
  • “Remove” item is now correctly enabled/disabled
  • Corrected handling of ‘char’ editor
  • Editors now change colour when they get focus
  • Corrected change detection in ‘number’ editor
  • File Editor now handles valid non-existing paths
  • Added ‘IsMutable’ check when setting properties
  • ValueObjects now share the same persistence details as their owner (Version, AccessDetails)
  • Only critical exceptions are shown in a dialog
  • Progress bar is not updated if form is disposing
  • Trace message no longer appears when viewing an immutable object
  • Saved Query filesnames now have 80 char limit
  • Corrected NHibernate search queries for Component mappings
  • Corrected NHibernate search queries for properties of same name, but different classes
  • Corrected NHibernate search queries for subqueries of the same type
  • Corrected re-hydration of saved Queries with multi-level subqueries
  • All dialogs and forms are now disposed of explicitly
  • Optimistic locking exceptions now show who modified the record, and when

TrueView Release 1.2.0901.05 – Upgraded to Nhibernate 2.0

Monday, January 5th, 2009

Happy New Year!

We’re starting the year with a new release.

BREAKING CHANGES

  • Upgraded to NHibernate 2.0.1GA (with breaking changes)
  • Added InnerList property to IEntityList
  • Changed NHibernate namespace to NH
  • Removed EntityListAttribute.IListField

Enhancements:

  • ValueObject now implements IValueObject
  • AccessDetails now implements IValueObject
  • Copy operations use a different colour when dragging primitives/ValueObjects
  • MyApplication.Save only persists dirty objects in the graph
  • TrueView is now responsible for object graph ‘cascading’
  • Added PropertyAttribute.BackingFieldName
  • EntityList now uses IEntityList.InnerList for NHIbernate collections
  • Added custom NHibernatePropertyAccessor to auto-manage all property types
  • Renamed “Paste Duplicate” menu item to “Paste New Copy”

Optimisations:

  • Improved Save performance
  • Improved UI update after setting a property

Fixes:

  • Fixed duplicate entries in object graph traversal
  • “Save this” never attempts to save other objects in the graph
  • Cloning now handles ValueObjects
  • Corrections in Entity version tracking
  • SetProperty now automatically uses IValueObject.Clone()
  • AddToList now automatically uses IValueObject.Clone()
  • Interface inheritance hierarchies now correctly identified
  • C#3.0 auto-property backing fields now identified
  • NHibernate query builder now uses class metadata to identify correct property name
  • Context menu doesn’t show duplicate Paste items for primitive values
  • Exceptions during form close displayed with “Retry/Cancel” buttons
  • Correction when validating property relationships

TrueView DataBridge 1.3.0901.05

BREAKING CHANGES

  • Upgraded to NHibernate 2.0.1GA (with breaking changes)

Enhancements

  • Added MSSQLServer2005 (default option)
  • Removed FieldNamingStrategy – it is now auto-computed
  • Interfaces are now “Unmapped” by default
  • Now uses NHibernatePropertyAccessor to manage EntityList properties
  • Uses PropertyAttribute.BackingFieldName if available
  • Generated properties now have IDENTITY/INDEX attributes set

Optimisations

  • Disabled ‘cascade’ options (TrueView is now responsible for cascading)
  • Disabled “Select-before-update’

Fixes

  • Corrected filter when creating interface mappings
  • Component mappings no longer include OID or AccessDetail properties
  • Corrected AssemblyResolve for strongly named assemblies

TrueView Release 1.04.0811.09

Tuesday, November 11th, 2008

Download the latest version here.

Enhancements:

  • Updated algorithm for identifying property backing fields
  • Added support for saving multiple entities in a single transaction

Fixes:

  • EntityLinker now handles relationships for super classes
  • Corrected relationship tracking when using EntityLinker
  • Corrected scope of internal members

TrueView Release 1.04.0810.27 – Factory and Repository support

Monday, October 27th, 2008

There are lots of questions in the DDD community about Factories and Repositories.  TrueView now supports these concepts in a nicely decoupled way.  Learn more in the user guide.

Enhancements:

  • Added support for Entity factories using IFactory<T>
  • Added support for Entity repositories using IRepository<T>
  • EntityLinker now uses IEntity instead of Entity
  • Added Min/Max range to MaximumSearchResults attribute property
  • Added CanModifyContents attribute property to support “Aggregate Root”
  • Added RequiresConfirmation attribute property to MethodAttribute
  • Stripped System.Reflection.TargetInvocationException to make exception messages clearer
  • Removed duplicate content from exception messages
  • Log files are now saved in compressed format
  • Added “Close All Windows” option

Fixes:

  • EntityLinker now accesses collection properties to allow NHibernate proxies to initialise
  • NHIbernatePersistence has better tracking of entity statuses
  • NHibernatePersistence now wakes up before adding/removing items to lists
  • MemoryCache now simulates versioning like NHibernate
  • Corrected internal tracking of new instances within object graphs
  • Corrected NHibernate query for “OR” operator
  • Corrected NHibernate query for GUID values
  • Improved persistence of unrelated object graphs (explicit UnitOfWork check no longer required)
  • Guid is now recognised as a Value Type
  • Window titles are now updated after a Save operation
  • Toolbar is updated when the active MDI child is changed
  • Splash screen no longer dominates the desktop at startup
  • Correction when creating an entity within an aggregate
  • EntityLinker now sets the dirty status of affected entities

TrueView DataBridge 1.23.0810.25

Enhancements:

  • Now creates link tables for classes that don’t have foreign key references

Release 1.02.0808.25 – Value Object support

Friday, August 8th, 2008

Added support for ValueObjects, as well as various bug fixes and enhancements.  Download it here.

Enhancements:

  • Added Evolving.TrueView.Domain.ValueObject to support “Value Objects”
  • Added better exception messages when adding and creating entities within lists
  • EntityList TreeNodes are now sorted by Summary value
  • Added icons to Query Dialog buttons
  • EntityAttribute.RelationShipType is no longer enforced by default
  • EntityListAttribute.RelationShipType is no longer enforced by default

Fixes:

  • Query Dialog now handles null/empty search values
  • Fixed exceptions when saving using NHiberate
  • Fixed formatting in RichText editor
  • RichText editor now handles CTRL-ENTER
  • Corrections to Evolving.TrueView.MyApplication.GetManager()

TrueView DataBridge 1.22.0808.25

Enhancements:

  • Now creates link tables for classes that have 2+ EntityList<> properties of the same type
  • Relationships can be explicitly defined between properties of 2 different classes

Release 1.02.0806.17 – Introducing the EntityLinker

Tuesday, June 17th, 2008

Writing scaffolding code to manage relationships can be quite tedious, so the EntityLinker was born.  The EntityLinker resolves and updates relationships automatically – and is more intention revealing.  Learn more about it in the user guide.

BREAKING CHANGES:

  • AddItem and RemoveItem delegates are now available in IEntityList
  • Changed IEntityList interface

Enhancements:

  • Added EntityLinker to manage entity relationships
  • Added better support for clipboard text formats
  • Added UseOptimisticLock attribute to AccessDetails class
  • Added InitialisedFrom() function to EntityList

Fixes:

  • Manual UI refreshes are now done on the UI synchronisation context
  • Added detection for IEntityList Add/Remove methods with multiple parameters
  • Removed/renamed Search Queries are removed at the end of a session
  • EntityList TreeModes are now sorted by name
  • Backing fields are only identified for concrete classes

TrueView DataBridge 1.22.0806.17

Enhancements:

  • Added support for ‘UseOptimisticLock’ attribute on properties & bags