Change log
LightSpeed 4.0 change log
Released: 30th June 2011
- Additions
- Enhanced support for distributed scenarios
- Meta Data information for entities
- Additional web development support (MVC and WinForms)
- Enum discriminators in the designer
- Entity default settings police in the designer
- New display options in the designer
- Per entity colours in the designer
- Designer migrations extensibility
- Table and index hint support
- Support for 'created by','updated by' and 'deleted by' attributes
- Reference data support
- Custom entity construction using EntityFactory
- Changes
- Updated database providers
- Sub-namespace support in the designer
- Eager load associations declared on derived types of the queried type
- Numerous minor designer extensions and improvements
- Minor enhancements to command line tools
- Bug fixes
- Improvements to SQL generation in advanced querying cases
LightSpeed 3.11 change log
Released: 24th August 2010
- Additions
- SQL Server Compact 4 CTP data provider
- Queries can traverse through associations
- User defined mappings between database columns and LightSpeed fields
- If you do an Update Database and the database does not exist, the designer now offers to create it (SQL Server, MySQL, PostgreSQL and SQL Server Compact only)
- Improved keyboard support in designer
- QueryPropertyAttribute allows property names to be decoupled from field names for querying purposes (e.g. polymorphic columns in single table inheritance)
- Migrations projects can now be in solution folders other than the root
- LINQ support for .ToString() and Convert.ToString()
- Support for composite (&& and ||) expressions in Where Any and All LINQ clauses
- Projections now supported in LINQ join criteria
- LINQ Where clauses can use scoped subqueries
- LINQ support for joining subqueries
- Added LINQ support for DateTime.Date on SQL Server 2008
- Joins support multiple criteria (via join on anonymous type)
- ‘Update by query’ now supports the Query.Identifier property
- Limited support for discriminated derived types in a different assembly from the root type
- Limited support for custom association resolution (for cross-cutting composite keys)
- ValidateUniqueAttribute scope argument now supports composite key members
- EntityFactory.UpdateEntityState added to Testing namespace
- Batch insert support for Amazon SimpleDB
- Designer support for nullable stored procedure arguments
- Designer option to suppress code generation for one-to-one associations
- Changes
- Designer warns if you create an association to a concrete table inheritance base class
- Designer warns if an association is redeclared in a derived class
- Designer warns if Convert to Auto Through Entity would be an incompatible change
- VS2010 designer now warns if the project targets the Client Profile
- Updated SQLite provider to version 1.0.66
- Eager load associations declared on derived types of the queried type
- Hide some validation options in the designer where they don’t make sense for the data type
- User- and provider-defined types are now displayed in alphabetical order in the designer Data Type drop-down
- The results of Count are now aligned with those of Find and Count Distinct in paging scenarios
- Improvements to the DTO guidance sample
- Bug fixes
- Fixed a bug with ordering on group keys that were obtained by traversals
- Fix for an error when using joins and projections and an entity property name was translatable to SQL
- Fixed a spurious designer warning
- Fix for an issue using logical expressions involving nullable properties from Visual Basic
- Fix for issues with .NET Remoting
- Fixed a designer bug which prevented use of the tree to add CLR attributes
- LockVersion is no longer updated on failed saves
- Miscellaneous fixes for class table inheritance
- Auto through entities now get correct identity type when creating new tables from designer
- Designer custom template path now shows even if the .lsmodel file is in a project subfolder
- Fixed an issue with missing projects in a solution
- Visual Basic LINQ Group By fixes
- LINQ .Equals support fixes
- Designer now ignores transient properties when creating new tables
- Aliasing issue in joins
- Fixed an issue with using SqlXxx data types that was causing problems for SQL Server 2008 spatial queries
- Fix for designer DTO error if entities were declared internal
- SimpleDB LINQ projections
- Designer now generates SQL Server Compact blob columns correctly
- SimpleDB inequality comparisons and unique validations
- Empty linked model should not cause compiler error
- VS2010 designer was showing ‘arrows to nowhere’ when using external class references
- Fix for spurious table creation when designer contained an auto through entity with an ambiguously singular/plural name
- Fixed KeyNotFoundException when sorting on the property of an eager-loaded child entity when the association is nullable
- Fix to allow the designer to work with integrated authentication on Oracle
- Fixed an error with client-side boolean literals
- Respect discriminators when joining to a derived class
- Fix for incorrect foreign key being used if an entity has multiple eager-loaded one-to-one associations to different branches of a STI hierarchy
- NullReferenceException when selecting a ThroughAssociation member in a LINQ projection
- Multiple joins to the same entity
- Fix for ForeignKeyFieldAttribute not being respect in eager loads
- ‘Unresolved identifier’ errors in generated SQL
LightSpeed 3.1 change log
Released: 25th May 2010
- Additions
- Class table inheritance
- Visual Studio 2010 designer support
- Saved views in the designer
- Linked models in the designer
- Invoke methods on SQL Server SQLCLR columns including spatial data types
- Localisation of property names in validation messages
- Added method to get deleted items from an EntityCollection
- Operation completed notifications for connection strategies
- Support for scalar and nonquery stored procedures
- One-way associations for reference data scenarios
- Copy and paste multiple selection in the designer
- Designer support for composite foreign key column mappings
- T4 directive processor for LightSpeed designer models
- Create Partial Classes designer command to create partials for all entity types
- Composite key fields can now be used as association foreign keys
- Designer support for load-only properties (loaded from database but not saved)
- Reminder notes in designer
- Unique constraint support in designer and migrations
- Configure identity type on auto through entities
- Additional logging information for structured loggers
- Import LINQ to SQL models into the designer
- Support for raw SQL in migrations
- LINQ support for bitwise operators
- LINQ support for String.CompareTo
- LINQ support for non-extension Contains methods
- LINQ coalesce support
- LINQ subquery support
- Improved LINQ grouping and join support
- Support for using array length in LINQ queries
- Added support for single column Except() across disparate sources
- Allow entities to be used as range variables in LINQ joins
- Support for grouping expressions involving multiple columns and columns from joined tables
- Support for methods in grouping expressions
- Support mapping Oracle SYS_GUID function to Guid type
- Amazon SimpleDB consistent read support
- VistaDB views and stored procedures now supported in designer
- Improvements to VistaDB migrations support
- PostgreSQL functions now supported in designer
- PostgreSQL uuid type support
- Changes
- Designer retains zoom level at last save
- Null IDs return null entity
- Designer raises validation error if differently named fields map to same column
- Removed option to generate obsolete Query calls when using Amazon SimpleDB
- EntityState is no longer reset to Default if SaveChanges fails
- TestUnitOfWork marks all entities as Default after SaveChanges
- Association count support
- Custom hash codes for generated composite key types (default hash codes produced collisions)
- Upgraded to version 2.0.8 of Npgsql
- Include inherited indexed fields in search
- Changes to handling of Distinct in paging scenarios
- Bug fixes
- Fix for constant boolean subexpression elimination
- Fix for multiple joins through same relationship
- Fix for issue with ordering on joined table where the joined table has more than one ordering
- Fix for not being able to use traversals inside an Any in a LINQ Where clause
- Fix for items added via an association not appearing in the identity map
- Original stored procedure names were lost during drag and drop
- Fix for eager loading being disabled when using a vacuous LINQ select
- Fixes for experimental lsupdate and lsgetmodel tools
- Fix for foreign key column names in designer sync
- Respect value object column name prefix during designer sync
- Removed requirement to perform manual post-install steps on non-English versions of Visual Studio
- Checks for reversed joins
- Dropping a STI hierarchy generated multiple DropTable migration statements
- Fix for spurious joins in certain paging scenarios
- Fix for null members in LINQ projection
- Fix for invalid cast in LINQ projections when a GUID was represented as a string in the database
- Map grouping attribute names
- Various fixes for automatic join creation
- Import tinyint(1) MySQL columns into designer as Boolean instead of SByte
- Fix for using enums in LINQ projections
- Fixes for projecting and joining on parts of the composite key
- Fix for client-side LINQ expressions not being evaluated before being passed to the query engine
- Fix for range validation of decimals
- Fix for CancelEdit nulling out associations that were lazy-loaded after the BeginEdit
- Fixed ordering of insert and delete operations when a self-reference was set by foreign key
- Fixes for decimal identity types
- Fix for logger not displaying Oracle cursor names
- Fix for discriminator load issue
- Fix for inheritance exception on SimpleDB
- Fix for Count queries on SimpleDB
- Fix for logical expressions in LINQ projections
- Correctly create the DBVersion table when programmatically running migrations
- Fix for size not being applied to string foreign keys in generated migration code
- Fix for generated AsDto method when a value object member is null
- Migrations Generate SQL was generating only one step when running against a connected database
- Robustness enhancements to Visual Studio migrations runner
- Fix for up script not being created in Visual Studio migrations runner
- Fix for designer slowdown on Oracle databases with a lot of foreign keys
- Integrity failure on SaveChanges if an IdentityColumn-based entity had a FK to a non-IdentityColumn-based entity
- Unescaped quotes in connection strings in Get Started screen XML
- Fix for LIKE-based string methods on traversals
- Fix for saving entities with no fields
- Fix for multiple traversals of a one-to-one association from the non-FK end
LightSpeed 3.0 change log
Released: 14th December 2009
- Additions
- Join, group, union and intersect support
- Subquery support
- Migrations framework, migrations runner and migrations generator
- Composite keys
- Multipart order-by clauses on supported databases
- Order by field of a value object
- ASP.NET medium trust support
- Mono support
- CRUD procedures
- Option to override default command timeout
- Expose LightSpeed model via ADO.NET Data Services
- Identity method for sequence per entity type
- Per-property change tracking
- Support for ASP.NET Dynamic Data automatic client-side validation (DataAnnotations)
- Option to not null out child foreign key references on save (and throw exception instead)
- Option to validate a URI as a relative URI, and to permit empty URIs
- Option to include soft-deleted items in unique validations
- Option for empty strings to count as present in presence validation
- Query syntax for a subselect to join back to the root table of the original query
- Extensibility hook for customising how a unit of work uses database connections
- FindBySql method to load entities from a custom command
- Fake object support classes
- SQL Server 2008 provider
- SQL Server 2000 provider
- IBM DB2 provider
- VistaDB 4 provider
- SimpleDB Count support
- SimpleDB paging support
- Custom URL and signature options in SimpleDB provider, for use with M/DB and Amazon’s European endpoint
- Detect changed nullability in schema round-tripping
- Designer support for through associations
- Designer commands to move properties to a base or derived class
- Designer updates views when using Update From Source
- Designer schema round-tripping for inheritance hierarchies
- Designer schema round-tripping for value objects
- Option to use UTC or custom timestamp for CreatedOn, UpdatedOn and DeletedOn
- Refactoring in designer
- XML documentation comments in designer
- Option to log SQL applied during designer Update Database
- Enabled cut, copy and paste of entity properties in designer
- Designer support for mapping the foreign key column in one-to-one associations
- Designer support for single-pass creation of multiple tables
- Designer support for PostgreSQL drag and drop (with custom DDEX provider)
- Filtered views in designer
- Import namespaces into designer generated code
- Surface email validation “is required” flag in designer
- Override database type mapping in designer
- Option to remove Hungarian prefixes on table and column names when dragging onto designer
- Designer enum support
- Designer support for named aggregates on one-to-one associations
- Copy designer image as bitmap
- Import LINQ to SQL model
- Extensibility model for designer metadata
- Zoom menu on designer
- Designer support for customising value object column name prefix
- User-defined mappings of CLR methods in LINQ queries to SQL functions
- LINQ support for Equals method
- LINQ querying over entity collections
- LINQ support for “is” operator
- Nullable type support in LINQ
- Aggregate operators in LINQ “where” clause
- LINQ support for join, group by, intersect and union
- Changes
- Generated DTO classes derive from common base class
- Main LightSpeed assembly now depends on .NET 3.5 SP1
- Use Select instead of Query when querying SimpleDB
- Search with IdentifiersOnly does not load entities
- lsgen.exe no longer generates associations to excluded entities
- Call OnSaving for entities that are being deleted
- Updated database providers to more recent versions
- Automatically uninstall existing LightSpeed installation when upgrading
- Emit DataObjectAttribute onto designer generated entities
- Save DateTime values with millisecond precision in SimpleDB
- Performance optimisations for stored procedures with large result sets
- Configuration settings are not case-sensitive
- lsgen.exe disambiguates relationships with the same name
- Save only changed fields when using optimistic concurrency checking
- Provide access to associated entity when reporting association validation errors
- Allow empty prefix for value object columns
- Support for 0 as identity value
- Accept empty string during email validation when not required
- Renamed FindOne(object) overload to FindById
- Columns in ASP.NET Dynamic Data are sortable
- Performance improvements for identity column inserts
- Designer generates timestamp on PostgreSQL instead of date for DateTime properties
- Licensing restrictions on entity count applies to designer
- Bug fixes
- Fix for incorrect removal after adding multiple through associations
- Fixed nullable type handling on SimpleDB
- Removed restriction on minimum DateTime in SimpleDB
- Fixed issue with nullable properties in ASP.NET Dynamic Data
- Fix for scalar LINQ operators intermittently returning incorrect values in multithreaded environment
- Logging issue with stored procedure return values
- Fixed issues with nullable and GUID foreign keys in ASP.NET Dynamic Data
- Type model loading is now more robust in multithreaded environments
- Fix for reuse of transactions on disposed connections
- Resolve custom designer template path relative to project directory not Visual Studio directory
- Set nullability of columns when creating a new table from the designer
- Additional diagnostics for broken one-to-one associations
- Fix for sequence identity generator creating duplicate IDs
- Fix for child collections being out of order when main query included paging
- Eager load associations when querying through a view
- Stored procedures not in the default schema can be dragged onto the designer
- Fix for calling Oracle functions using ProcedureQuery
- Fixed nullability of foreign key columns generated by designer
- Removed requirement for fields to be nullable when adding columns to a table in designer
- Do not apply database range restrictions to transient DateTime fields when validating
- Removed requirement to explicitly compare boolean values to true or false in LINQ queries
- Fix for passing null inputs to an Oracle stored procedure
- Fixed bug with delimiters in SimpleDB
- Fixed issue where designer tried to recreate existing Oracle tables when schema was explicitly specified
- Call OnValidate only once for entities with associations
- Fixed issue where nulling out a lazy entity holder did not detach or cascade deletes, or mark the entity as dirty
- Fix for struct value objects accessing garbage memory
- Apply TableAttribute when dragging a view onto the designer if required
- Exclude IsValid from being offered as a filter in ASP.NET Dynamic Data
- Fixed designer munging of backing field names with underscores
- Fix for creating PostgreSQL boolean columns from designer
- Fix for designer errors on databases with no native GUID type
- lsgen.exe created bad length validations for varchar(max) columns
- Allow use of entities in an “update by query”
- Apply discriminators when eager loading an association to a derived class
- Improved handling of unsigned integer types
- Fixed issue with nullable string foreign keys
- Allow string foreign key columns in ASP.NET Dynamic Data to be empty if nullable
- Handle SQL Server attached MDF files in designer
- Fix for enums and EntityState column in ASP.NET Dynamic Data Futures
- Don’t save entities where only transient fields have changed
- Designer support for Oracle timestamps, binary_float and binary_double
- Fix for one-to-one associations in ASP.NET Dynamic Data
- Fixed issue querying on a field of a value object when the entity had multiple value objects of the same type
- Corrected nullability of UpdatedOn column when created by designer
- Exception when using value object fields in complex query expression
- Stack overflow in Visual Studio when model contained an inheritance cycle
- Length in designer-created column when length validation was greater than database maximum column size
- Fix for ASP.NET Dynamic Data leaking a unit of work instance on an update, insert or delete
- Workaround for ASP.NET Dynamic Data leaking a unit of work instance when populating a filter drop-down
- Type coercion fix for discriminators
- Fix for WHERE clause not being emitted if a comparand was placed first in a LINQ query
- Fix for designer allowing only one one-to-one association between any two types
- Fixed incorrect eager load query when querying by ID on soft-delete entity
- Fixed issue when using a literal value in a logical expression
- Removing a New entity from a child collection would result in other entities added to that collection not being saved
- Fixed incorrect SQL if a query combined two paths which diverged and reconverged
- Fix for eager-loaded associations later being reloaded if the entity was already in the identity map when the eager-load occurred
- Fixed handling of non-ANSI characters in designer custom attributes
- Corrected type of foreign keys to derived types in one-to-one associations
- Fixed issue where the designer could not alter the type of a SQL Server column with a default
- Fixed issue with designer Update Database if the database did not support views
LightSpeed 2.2 change log
Relased: 3rd February 2009
- Additions
- Stored procedure support on SQL Server, Oracle, PostgreSQL (via functions) and MySQL
- Stored procedure designer support on SQL Server and Oracle
- Multiple views support on SQL Server, Oracle, MySQL, PostgreSQL and SQLite
- View designer support on SQL Server, Oracle, MySQL, PostgreSQL and SQLite
- Amazon SimpleDB support
- ASP.NET Dynamic Data support
- Designer support for declaring members as non-public and/or virtual
- Designer support for excluding members from generation (custom implementation)
- Designer support for custom CLR attributes on entities and members
- Designer command to convert a one-to-many association to one-to-one
- Designer support for entities inheriting from an external base class
- Schema round-tripping for one-to-one associations
- Entities can now be used as ASP.NET ObjectDataSources
- Extensibility hook for entities to define their own ID generation strategy
- Designer now recognises Oracle floating point type
- Order by property of associated entity
- Designer “get started” screen
- Designer generates WCF data transfer objects
- Changes
- Less strict numeric type conversion
- Raise PropertyChanged event when reverting changes using CancelEdit
- Some improvements to error messages
- Non-synchronisable entities in a model no longer prevent schema round-tripping of the rest of the model
- Designer reports failure if user drags a table with no primary key
- Bug fixes
- Fixed bug with cascade delete for entities with both soft delete and locking
- Fixed bug with cascade delete if a cascade involved 5 or more levels of children
- Fixed bug if a unit of work continued to be used after a query-based Update or Remove
- Designer now handles MySQL large BLOB types
- Fix for SQL Server database names containing spaces
- Fix for designer failing to delete foreign keys in SQL Server
- Soft-deleted items no longer show up in eager-loaded collections
- PostgreSQL designer support was not installed correctly
- PerThreadUnitOfWorkScope
- Custom validations in designer
- Corrected field types for foreign keys to derived classes
- Issue with property name inference if multiple properties referenced the same field
- Fixed designer error when the primary key column was also a foreign key column
- Search index rebuild now respects custom index content
- Fix for ThroughAssociation.CopyTo causing a StackOverflowException
LightSpeed 2.1 change log
Released: 16th October 2008
- Additions
- Full-text search support
- Support for SQL Server Compact, VistaDB and Firebird databases
- String identity support
- GUID identity support on databases with no native GUID type
- GuidComb identity method (can improve insert performance)
- Per-type cascade delete behaviour
- Per-type identity methods
- Ad hoc UPDATE queries
- Transient entities
- Limited SelectMany support in LINQ provider
- Designer support for MySQL 5.1 RC
- Designer support for eager-loading the many-to-one direction of an association
- Designer support for special columns (CreatedOn, UpdatedOn, LockVersion, SoftDelete)
- Designer support for concrete table inheritance
- Designer supports custom templates
- Designer generates field name constants for use in Entity.Attribute expressions
- Designer option to generate internal classes
- Added strip prefix options to command-line model generator
- Added table include/exclude switches to command-line model generator
- Changes
- DiscriminatorAttribute now accepts entity attribute name as well as column name
- Designer infers MySQL unsigned columns as unsigned data types
- Designer reports error on invalid discriminator
- Designer reports error on duplicate class names
- Update to SQLite 1.0.58
- Bug fixes
- Performance and robustness improvements in designer
- Designer infers MySQL tinyint as byte
- Error when transient field was of generic type
- Fixed bug using constants in a LINQ projection
- Fixed collisions in identity map
- Vista users no longer need to run installer from elevated prompt
- UnitOfWork.Find(Query) ignores projections instead of failing
- Fix for designer sometimes failing to detect that the Column Name property was required
- Improved schema inference in designer
- Designer support for connecting to Oracle database as non-owner
- Designer infers association even if foreign key is not conventionally named
- Improved SQL Server data type support in designer
- Designer support for SQL Server “server=” connection strings
- Improvements to MySQL schema round-tripping support
- Fixed bug with using reserved words as table or column names in schema round-tripping
- Fixed bug which prevented creating multiple foreign keys to the same table in SQL Server
- Fixed bug with using schema round-tripping to change the type of a database column
- Error in designer-generated code for one-to-one associations
- Issue with GUID discriminators
LightSpeed 2.0 change log
Released: 3rd June 2008
- Additions
- Multiple concurrent LightSpeedContexts supported
- LINQ provider
- Visual model designer
- Command line code generator
- Int64 (long) now supported as identity type
- SQL function support
- SQL calculation / aggregation support
- Value range validation
- String length validation
- Custom validation error messages
- Value object inheritance
- Schema support
- DISTINCT support
- Column-to-column comparisons
- Multiple value members of the same type on a single entity
- Changes
- New API: Data manipulation methods moved from Repository to IUnitOfWork and removed Repository gateway class.
- Throw exception when circular association detected
- Improved property name inferencing
- Value object column names must now be prefixed with the name of the value object field in the entity
- LightSpeed configuration section supports multiple LightSpeedContexts
- Bug fixes
- Transient fields included in validation
- Property name inference works for fields declared in abstract base classes
- Bug in query optimiser when using != operator
- Don’t cascade in-memory deletes for new entities
- Fixed some bugs with reusing Query objects
- Correctly handle collisions in hash codes of GUIDs
- Fixed bug with lazy value objects
LightSpeed 1.2 change log
Released: 4 February 2008
- Additions
- Before/after load hooks
- Configure table and column names using TableAttribute and ColumnAttribute
- CreatedOn and UpdatedOn fields for client-side timestamping
- EntityCollection can now be subclassed
- One-to-one associations
- Postgres, MySQL and SQLite now support auto-increment columns
- Projection support
- Property name inference
- Value fields can be lazy loaded using named aggregates
- Visual Studio debugger visualizer for queries
- Localization sample
- Changes
- Entity validation properties are now Browsable(false)
- Throw exception if reverse association missing
- Lazy loaded associations are now tracked by IEditableObject implementation
- Detached entities are now automatically re-attached in UnitOfWork.Remove
- Many-to-one associations are now wired up from identity map or cache during object load
- Bug fixes
- Cascading delete issues
- Reparenting issues
- Bug in query optimizer
LightSpeed 1.1 change log
Released: 12 November 2007
Related story: LightSpeed 1.1 Released
- Additions
- Discriminator fields automatically initialized if possible
- Discriminator fields can now be enums
- Support for read-only fields
- Dependent attribute for foreign keys
- ReverseAssociationAttribute
- OnValidating hook
- Soft delete feature so that data is never deleted, only marked as deleted
- Default ordering feature for classes and associations
- Added a TraceLogger
- Added ability to do polymorphic querying
- Added IdentifiersOnly option to Query
- Added support for nested units of work
- Sample application showing how LightSpeed passes Mats challenge
- Sample application built using Visual Basic
- Sample application demonstrating the construction of an online store
- Changes
- Major performance improvements when querying/flushing
- Validation now walks associations
- ValidateUnique can now be scoped
- Improved validation error message handling
- EntityCollection now has set semantics
- Upgraded installer to be several megabytes smaller
- Many improvements to the samples
- Extensive improvements to help documentation
- Bug fixes
- Inheritance mapping issue for complex inheritance scenarios
- Tweak to allow LightSpeed to work better in Visual Basic projects
- QuoteIdentifiers if passed from the configuration section is now applied correctly
- QueryExpression values issue when using enums
- Ordering of sql query execution when using complex relationships
- Several fixes to the query optimizer for complex scenarios
- Deletion cascade issue
- Issue when using custom base class
- Eager load, ordering subclass issue
- Framework initialization issue
- Issue with inheritance loading
- Bug relating to UnitOfWork disposal and Transaction completion ordering
- Index out of bounds exception on load
- Edge case issue in query optimizer
- Minor validation issue
- Foreign key field updates now correctly updates associated EntityHolder
- Corrected inheritance of some LightSpeed custom attributes
- Deleting an entity now correctly updates the in-memory object graph

Free download