Change log
LightSpeed 5 Change Log
Released: 7th March 2013
- Additions
- Visual Studio 2012 support.
- Migration overload to create the key table with an initial value, and use it by default when generating migrations from the designer.
- Log the column name as part of each logged data parameter.
- Support for migrating EDMX V2 files to LightSpeed Models.
- OptionalUrlStemSuffix for the LightSpeed Web Contract library.
- Allow the creation of an empty migration for use with custom migration code.
- Performance improvements for class table inheritance models.
- Interception API for profilers.
- Designer support for the ForeignKeyFieldAttribute on one-to-one associations.
- Compiled queries.
- Compiled paramaterised queries.
- Compiled queries via the LINQ provider.
- Compiled paramaterised queries via the LINQ provider.
- Non-versioned partial update support.
- Support for IsNullOrEmpty being translated to being a native database query for performance benefits.
- Support for conditionals in projection.
- Support for type conversion in projections.
- .WithViewName() extension method for use with LINQ provider.
- Show Data command from the LightSpeed Designer to show the contents of a table directly in Visual Studio.
- FindByIdentifiers() method for DistributedUnitOfWork.
- Ability to cache 'FindAll' results.
- Option to have FindById() return null for non-existent ID's when working with Amazon SimpleDB.
- Automatic compilation of FindById() queries for sizeable speed improvement.
- Azure Table Service data provider.
- Support Calculate queries operating over sub-queries.
- Designer Defaults Policy can now specify defaults for generating association DataMemember attributes.
- Extra information from LightSpeed.MetaData API for fields: Validations, IsNullable, IsIdentityField.
- If a LightSpeed Model defines named aggregates, emit constants for their names so users can write e.g. WithAggregate(StoreAggregates.WithProductInfo).
- Direct support for SqlServer2008 time data type translation both in core and Designer.
- Remove() to LightSpeedQueryOperators which allows Remove by Query to be specified using a simple expression.
- Ability to intercept queries from entities (for example, filter on currency or security).
- Added support for per-table identity block size.
- Added support for parameters of table type in SQL Server 2008 stored procedures.
- Support for database-side timestamps for CreatedOn and UpdatedOn fields.
- Support for expressing SqlGeography/SqlGeometry UDT properties in queries.
- Support for the HierarchyId data type.
- Add Enlisted event to Entity which is fired when SaveChanges is enumerating entities for unloading.
- OnSaved event on Entity called after SaveChanges() completes Flush().
- Before/After hooks for Migrations to allow custom user code to be injected into workflow when deriving.
- Prompt to create the KeyTable if it does not exist when updating from the Designer.
- RawSql escape hatch to provide a better version of FindBySql for the masses.
- SQL Server 2012 provider and support for SQL Server 2012 Sequence identity type.
- Changes
- Database providers are no longer referenced directly in from the main LightSpeed assembly.
- Insert key on a property now inserts a new property after the selected property rather than at the end.
- Allow web contracts to be declared on controller classes as well as interfaces.
- Unique validation scoped to the level which declares the field, not the level of the entity you are validating at the time.
- Improve tracking of updates to FK's when updating an entity holder to avoid forcing all FKs into partial updates.
- Add a false predicate to a query when we have an empty sequence in .Contains().
- Email validation regex now supports the + and ' characters in email addresses.
- Nicer messages when no connection to the database can be made when dragging from the Server Explorer to the designer.
- Automatic push to sub-query via LINQ provider when LightSpeed detects a projection and it wants to do a Count() over it.
- Support for sub queries on GroupJoin.
- AppSettings key (Mindscape.LightSpeed.Web.Routing_EnforceSSL) to control behaviour of secure constraint for routing.
- Better support for conditionals in projections.
- Optimisation to remove the performance penalty for using variables in a LINQ query.
- Don't include the SoftDelete check attribute when targeting a sub-query for a projection of the same entity type where we would have included the soft delete filter at the sub-query level already. Avoids the need to bubble this up through the projection.
- Entity collection fields initialised to null. Allows performance optimisation for entities with large numbers of unused associations as constructing entity collections is a relatively slow operation.
- Added support for negated boolean expressions in AnyAll.
- Allow access to the validation rule instance from the validation error, while preventing mutation.
- Include schema in auto-joined tables being joined by an identifier expression.
- Precision and Scale added to ProcedureParameter to allow this to be passed on for output parameters which may require it.
- Allow migrations access to the connection string, so that they can invoke LightSpeed to do data migrations rather than relying on ExecuteNativeCommand.
- When a stored procedure returns NULL through an out-parameter, convert it to CLR null instead of leaving as DBNull.Value.
- When updating a SQLite database with a GUID field, set COLLATE NOCASE on the column (because it is mapped as string).
- Don't generate dynamic data column providers if [ScaffoldColumn(false)] is set on the wrapper property.
- Defer running Entity.AfterLoad() until after associations have been wired up.
- Allow RemovalBehaviorAction.NoActionNoCheck on (reverse of) null associations.
- Handle grouping keys where the anonymous type is nested due to joins in the surrounding expression, identified some other issues to resolve around grouping.
- More meaningful exception message if a database query returns NULL, but the target type is non-nullable (e.g. an empty SUM() operation on SQL Server when the summand type is non-nullable).
- SQL Server computed columns default to LoadOnly when dragging a table onto the designer.
- IDENTITY columns default to LoadOnly when dragging a table onto the designer.
- ValidationException now provides the entity in error.
- Allow model binder to support IEntityFactory for entity initialisation and filters for custom filtering of error messages (e.g. for when errors are localised).
- Improved grouping support. Better support for function and support for traversals in grouping keys.
- Default values for GUID, DateTime and BLOB columns when adding non-nullable columns to an existing SQLite table (because SQLite won't let you add a non-nullable column without a default even if the table is empty).
- Pass down IncludeDeleted flag into determination of SoftDelete inclusion into context expression for association loads.
- Friendly error when we encounter a drag drop source we don't know about - e.g. not Server Explorer.
- Visibility options now available in the designer for the One To One associations.
- SQL generated for MySql5 - don't emit DEFAULT '' for TEXT based columns.
- TEXT field length not being assumed as unlimited with MySql5 extractor leading to an bogus change reported.
- No more .NET 2.0 Compatibility Build.
- Updated SQLite Provider to 1.0.82.
- Bug fixes
- NullReferenceException when parsing LINQ queries when the WHERE clause contained a FK reference to a component in a composite ID.
- Designer now correctly creates a boolean property when importing a tinyint(1) from MySQL.
- Visual Studio error if a migrations project contained no migrations.
- Do not generate special fields in STI derived classes if we've already generated them on the base class.
- Incorrect coalescing two columns in LINQ.
- Multiple fixes for generating migrations from STI hierarchies.
- Incorrect selection of type model when we have a non CTI inheritance where two different types in the inheritance hierarchy are being used. Force selection back to the root type to make sure its consistent.
- PerRequestUnitOfWorkScope.HasCurrent no longer throws an error when called inside the Application Event Handler (fixes an issue with Ninject disposal).
- Spurious circular association error when there are two classes in a class table inheritance hierarchy both of which hold foreign keys to other classes in the hierarchy.
- Paging being included in sub-selects on the source query when it should only be on outer query.
- Cascade deletes into a CTI derived class where the association is non-dependent. Should set FK NULL only in the target table rather than in base tables also.
- Heuristic fix to report meaningful error on indirect circular association instead of going into stack overflow.
- Error when projecting only base class fields while filtering only on derived class fields in class table inheritance.
- Spurious discriminator warning if n STI root class derived from another class using concrete table inheritance.
- Crash in BeginEdit() on a distributed entity.
- Use of grouping query caused some joins to end up with invalid identifiers.
- Converting from LINQ to SQL model breaks when no connection string is included in the DBML file.
- Order By on a nullable association resulted in filtering out entities when the association was null.
- String.Contains() losing aliasing information when applied to multiple joins of the same table.
- Associations not being treated as dependant if the foreign key was a string.
- Value objects in CTI derived classes not being materialised when using load-by-name (Stored Procedure or FindBySql()) and querying through the base class.
- Ordering across a multi traversal multiple times.
- Ordering where we had row number based paging and a projection involved where the ordering column was not the first column in the projection.
- Calculations in class table inheritance.
- Special fields declared in concrete table inheritance base classes not getting created in the leaf tables during database sync.
- Fix for ordering across associations where you have the same entity joined multiple times via different associations.
- When creating a table for an auto through entity, respect size of string ID columns in associated tables.
- Error when doing a uniqueness validation on a field of a value object.
- Issue where adding DeletedOn from joined context expression would not correctly identify base table.
- Resolve issue to join CTI base class as required in queries where context expression refers to base rather than derived class and context expression is being appended to an eager load.
- Descending being stripped from order by when being re-applied to wrapped distinct query for a ROW_NUMBER(OVER) - can we get more edge case than this?
- Migrations spuriously trying to recreate auto through entities and one-to-one associations even though they already exist.
- Query which has a criteria on LHS and logical on RHS could fail because LHS was not processed.
- Soft deleted columns being incorrectly aliased in update/delete queries.
- UDT procedure parameters being generated into the code as object instead of the UDT's CLR type.
- Exception if you put DiscriminatorAttribute on a root entity class.
- Not raising an exception if a SQL Server stored procedure successfully selects a result set and *then* calls RAISERROR.
- Candidate fix for virtual discriminators not being inserted.
- Not being able to return array values from ICompiledParameterValues to populate an IN clause.
- Not updating the database if a one-to-one association was added between two entities that already had a one-to-many association.
- Fix for race condition in Dictionary when caching LINQ closures under heavy load.
- Issue where a full text search could return an incorrect result if the text search returned a single hit, and that entity was already in the identity map, and there was a QueryExpression filter in addition to the full text search but the entity in the identity map did not conform to the QueryExpression filter.
- Fix for ninja filters not being applied in join clauses.
- Aggregation SQOs where the projection is specified in the Select clause but there is also a cast in the aggregate expression.
- Fix for scalar projection into DateTime using query objects.
- Fix for projection into nullables using query objects.
- Fix for issue where soft deletes were being included in join criteria due to CTI auto-joins leading to an unexpected null.
- Fix for boolean properties losing entity aliasing information in LINQ queries when appending == true criteria.
- Fix for issue with assignment of Composite Key id from a new parent object where composite key of child is FK to parent object PK.
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.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