LightSpeed’s design philosophy is centered on the following guiding principles:
· Convention over configuration.
· Support idiomatic .NET domain models: validation, data binding, change notification etc.
· Highly usable API and low barrier to entry.
· Encapsulate and encourage best practice patterns: session per request, Unit of Work etc.
· Small, lightweight and fast.
There isn’t room here to provide a full list of LightSpeed features, but among the key features are:
· Domain modelling. LightSpeed supports domain-driven design concepts such as entities and value objects, the Unit of Work pattern and aggregates.
· Visual model design. You can create models in a visual designer, making it easy to see the relationships between entities and reducing the need for hand coding. Models can be created from an existing database or from scratch using a toolbox.
· Rapid design iteration. The designer allows quick, non-destructive synchronisation of the database and the model, meaning there are no speed-bumps as you evolve your model.
· LINQ. You can use the popular LINQ syntax and methods to perform LightSpeed queries, gaining the benefits of code completion, compiler type checking and so on. LightSpeed also provides a query object API for dynamic queries and finer control.
· Validation. You can specify validation rules at the entity or property level. LightSpeed automatically checks validity before allowing an entity to be saved. Each entity exposes an Errors collection which supports data binding for easy presentation.
· Eager and lazy loading. You can load an entity’s dependencies in the same database query as the entity, avoiding the infamous N+1 problem. You can also define your own eager load graphs for different situations.
· UI framework support. LightSpeed implements several standard UI integration interfaces for you, including IEditableObject, INotifyPropertyChanged and IDataErrorInfo, making it easy to use entities in data-driven user interfaces.
· Convention-based mapping. You can just create your classes without having to spend extra effort mapping them to a database schema.
· Safe, efficient data access. LightSpeed always uses parameters in database statements, avoiding the risk of SQL injection vulnerabilities. Statements are optimised and batched for efficiency.
· Multiple databases. You can use LightSpeed with Microsoft SQL Server, Oracle, MySQL, PostgreSQL, IBM DB2, SQLite, SQL Server Compact and VistaDB. It also works with the Amazon SimpleDB and Microsoft SQL Azure cloud databases.
· Database migrations. For manageable and controllable upgrading and downgrading of the database schema.
· Distributed application support. You can ship an object graph over the wire, work with it on a client and return the changes efficiently to the server without needing to leave the LightSpeed API.