Home » Blog

rounded header

Archive for the ‘LightSpeed’ category

Nightly news, 3 February 2012

It’s the end of another week here at Mindscape HQ and time as usual to check in on what we’ve shipped in the last seven days. Here’s what’s new in the latest nightly builds.

WPF Elements

  • Added handling for race conditions in DataGrid.BringCellIntoView and DataGrid.GetCell
  • Fixed a bug in DataGrid.RemoveInputBinding
  • Added DataGridColumn.AllowGrouping property, which allows you to specify that the user cannot group on that column
  • You can now template DataGrid group row headers

Web Workbench

  • Highlighting for Less pattern matching and guards
  • Fix for file generation error when using checkout-based source control system
  • Updated Less compiler to 1.2.1
  • Improved positioning of opening braces during Format Document
  • Fix for error with unbounded node (e.g. unclosed quote) in CoffeeScript

LightSpeed

  • Apply COLLATE NOCASE when creating SQLite GUID primary keys
  • Fixes relating to one-way associations when the originating side is a concrete table inheritance base class
  • Fixed migrations error with abstract classes

WPF Diagrams

  • Tweak to the ElbowPathfinder

As always the free editions are available on the downloads page and you can get the full editions from the store. Happy coding!

Entity Framework vs. LightSpeed

tag icon Tagged as LightSpeed

Recently there was an article posted on InfoQ about the seven most requested features in the Entity Framework. We at Mindscape love the Entity Framework – it’s the best sales tool for LightSpeed that there could be! We decided to walk through the list and see how LightSpeed compares.

Improved SQL generation
EF Status: Planned, but only some improvements
LightSpeed: Already miles ahead, always improving

Now, to be fair, querying is really hard to get right and there are always cases that can always be improved. I’m sure every O/R Mapper out there has at least a few queries that they generate in a non-optimal way (yes, including LightSpeed) — but I think we can all agree than 5,000 line SQL queries from 5 lines of LINQ is a bit on the insane side.

Batch support
EF Status: Under review
LightSpeed: Since version 1 in 2007

LightSpeed is about being a full ORM but with as much speed as possible. We built in batching of inserts, updates and deletes from day one, not to mention batching on the select side to enable entire aggregates to be loaded in a single database access. LightSpeed automatically batches up CUD statements, reducing the number of database accesses for large updates by a factor of 10 or more.

By the way, LightSpeed also supports bulk updates and deletes, so if you have a raw database update that doesn’t need the business logic and domain-specific API of your entity mode, you don’t even need to load entities into memory to perform the update or delete them.

Support for a second level cache
EF Status: Under review
LightSpeed: Since version 1 in 2007, pluggable, ships with standard cache and memcached support

LightSpeed supports a first and second level cache and has always done so. A second level cache improves speed and reduces load when you have entities that rarely change (such as reference data), or when it’s not essential to have up-to-the-microsecond data. Caching is an essential element of a performance tuning strategy and we don’t think you should have to hack the underlying ADO.NET stack to get it.

Between inefficient selects, inefficient CUD and no second level caching, performance certainly is not a criteria that you’ll achieve with EF.

Support for multiple databases
EF Status: Under review
LightSpeed: Not planned

Would you believe we actually don’t support this either? Developers seem fairly keen to not want to touch their database for things like database spanning but it’s our view that this is not an ORM concern. If you need linked servers and other cool features like that then you should look at how the database engine can support this, not your mapper.

Note: Support for multiple databases as requested by EF users is for spanning databases not about database engine support. LightSpeed supports 9 different database engines out of the box.

Support for models with >200 entities
EF Status: Use several models (read: not planned or under review).
LightSpeed: Supported, and include multi-model file support.

When we released the LightSpeed Designer initially we were pleased with it – really nice looking, smart database diffing, etc. Then, Murphy’s Law: a user had a database with 2,000 tables! Not surprisingly, it was a tad slow working with that many entities on the design surface. We shipped a nightly build within 48 hours that made the designer lightning fast for this user and they never looked back. That was several years ago.

Of course, even eliminating performance concerns, working with that many entities can still be difficult. Computer screens are only so big, so it’s hard to visualise very large models. We’ve done a number of things to help with this, from entity colouring to pick out key entities or group related entities, to multi-file models, to navigation and filtering to locate the part of the model you need to work on and hide all the extraneous noise. You can even save the most common views and switch between them with just a couple of clicks. So we’re confident that even if you’re working with large models, the LightSpeed designer will still give you the best experience around.

Designer support for GUID keys
EF Status: Use a workaround of editing EDMX by hand. Changes to model mean you repeat the process again.
LightSpeed: Supported since day 1 with the LightSpeed Designer.

Seriously, how do you even miss this out? I guess if supporting enums seemed a bit hard than GUID keys must seem like crazy talk.

Schema Migration
EF Status: Currently in beta
LightSpeed: Added in 2009.

LightSpeed includes a powerful schema migration product. Including Visual Studio integration, server tools and the ability to switch database engine targets, you’ll struggle to find a better schema migrations framework for .NET. Read more about schema migrations that were included in 2009.

We’re constantly improving the cabilities of the migrations engine based on user feedback as well.

So why would you choose to use EF? Here’s a couple of common counter arguments for using EF:

“It’s Microsoft – it will get better!”
Sure it will, maybe in five years time. Unfortunately your software needs to be written today, not in five years. Microsoft also has a really bad history of killing data access technologies so I’d be more concerned that the improvement will be to throw out EF and start again. And honestly, how much better do you think it will be in five years time? The pace of improvement so far has been glacial, and of these seven most requested items, only two are being worked on currently.

“Entity Framework is free – LightSpeed isn’t!”
It’s true that our free edition of LightSpeed is only for small databases. If you think your solution doesn’t require good performance, nightly updates, a responsive support offering or solid foundations then by all means, lock in Entity Framework. We can guarantee you that you’ll waste more money fighting in the weaknesses with the Entity Framework than you would have ever spent getting a LightSpeed license. EF is only free if your time is worthless.

That’s a wrap

We’ve got a lot of friends in Redmond, and we think a bit of rivalry is good for everyone, as well as a bit of fun. And we know that there are a few popular feature requests for LightSpeed that have been outstanding for a while too! But we do feel quite seriously that it’s important for developers to make an informed choice about their tools. Because Entity Framework ships in Visual Studio, it’s easy for it to become a de facto choice, without considering the alternatives.

But if you like knowing that if you run into an issue you can get help directly from the developers then choose LightSpeed. If you like getting nightly builds with not just bug fixes but cool new features then choose LightSpeed. If you like your data access to be fast then choose LightSpeed. If you would like to use a more mature, more powerful and, frankly, more loved ORM then give it a go — grab the free version of LightSpeed and see what you think. We’d love to hear your feedback!

Nightly news, 27 January 2012

The big news in this week’s nightly builds is the new hotness in the WPF Elements DataGrid. Grouping, exporting, new APIs and, well, grouping again because it’s so neat — check it out! Of course, we’ve got a bunch of other updates for you as well. Here’s what’s new this week.

LightSpeed

  • Exclude null associations from polymorphic association validation
  • Fix for not being able to return array values from ICompiledParameterValues to populate an IN clause
  • Fix for LINQ projection that included the result of a Count on a join-into result when there was no Where clause
  • When updating a SQLite database with a GUID field, set COLLATE NOCASE on the column (because it is mapped as a string rather than a native GUID type)
  • Added support for per-table identity block size (for when new tables use KeyTable but the database also contains legacy tables which are also updated by other apps using increment-by-1 sequences)

WPF Diagrams

  • DiagramConnectionPointBase.OnPositionChanged is now exposed to user derived classes
  • Fixed a bug in the ConnectionPointRelocation sample

WPF Elements

  • DataGrid hotness!
  • Fixed a bug in TimeExplorer

As usual, you can get the updated builds of free versions from the downloads page, and of full versions from the store.

Nightly news, 20 January 2012

Cripes! Weeks and weeks of updates to catch up on! Here’s what’s new in the nightly builds since the last update.

LightSpeed

  • Fix for one-to-one association join chain in LINQ Where clauses
  • Added support for negated boolean expressions in LINQ Any and All
  • Fixed a memory leak with compiled FindById queries
  • Validation errors now provide access to the validation rule instance
  • Include schema in auto-joined tables being joined by an identifier expression
  • Fixed automatic date-time range validation for Oracle
  • Improved support for SQL Server 2008 TIME data type
  • Fixed an issue where a query with criteria on the left and a logical combination on the right could be processed incorrectly
  • Fix for DeletedOn column being incorrectly aliased in update/delete queries
  • Added support for deleting by LINQ query
  • Added Procedure and Scale options to ProcedureParameter class
  • Fix for procedure parameters of user-defined types in designer being generated into wrapper function signatures as object instead of strongly typed
  • Fix for value objects not being handled correctly in batch updates
  • Fixed exception if you put DiscriminatorAttribute on a root entity class
  • We now raise an exception if a SQL Server stored procedure calls RAISERROR (sic: what is this, guys, Fortran?) after performing a successful SELECT (previously only errors raised before the SELECT would cause exceptions)
  • Added a property for migration code to access the connection string of the database being migrated
  • When a stored procedure sets an out parameter to SQL NULL, we now translate this to CLR null instead of leaving it as DBNull.Value (this fixes casting errors in strong-typed wrapper methods)
  • Fix for virtual (non-mapped) discriminators not being populated on insert
  • Entity- and interface-level query filtering (in progress and subject to change)

Web Workbench

  • Collapsing support for non-top-level regions
  • Sass and Less Format Document command
  • Fixed issue in Sass compilation if install path included non-ANSI characters
  • Fixed JavaScript minifier mangling non-ANSI characters
  • Upgraded CoffeeScript compiler to 1.2.0
  • CoffeeScript comment highlighting fixes
  • Comment/uncomment block support
  • Performance improvements when making many deletes from a document
  • Error checking and signature help for Sass and Less built-in functions

WPF Elements

  • Continuing improvements to control themes
  • Fixes for potential issues in TimeExplorer, Chart, ChartAxis and PieSeries
  • Added option for rounding on lost focus in NumericTextBox
  • Added ResetZoom command for charts
  • MajorTickSpacing now keeps consistent tick density as user zooms
  • Added PieSeries.SelectedDataPointChanged event
  • Improvements to automatic bar chart width calculation
  • Fixed error when changing chart highlight mode
  • Fixed an issue with horizontal bar charts using categories along the Y axis
  • Resolved a DataGrid issue
  • Fixed foreground colours not being respected in CurrencyTextBox
  • Fixed potential null reference error when changing DataGrid.ItemsSource
  • Fixed some issues with chart default axes

WPF Diagrams

  • Added TreeLayoutAlgorithm
  • Fixed null reference error in ConnectionPointThumb
  • Fixed a diagram binding issue
  • Fix for a bug that was stealing mouse wheel and scroll events
  • Added an option to turn off infinite scrolling

NHibernate Designer

  • Added support for NHibernate sql-insert, sql-update and sql-delete overrides
  • Added support for stored procedures and named SQL queries

SimpleDB Management Tools

  • No longer need to click away from a row to ensure it is saved

As usual you can get the latest nightly builds from the Downloads page (free editions) or the store (full editions).

Kick start 2012 with this special offer!

Get 9 products for an amazing price

Make building better software your New Year’s resolution by taking advantage of our 30% sale on the Mega Pack.

For a limited time, pay only $699 and you’ll receive:

Plus, you also get:

  • 12 months of new releases, nightly builds and new products!
  • The best support in the business!

Imagine that – a full range of developer tools across WPF, Silverlight, Windows Phone, Data Access, Web Development and Domain Modeling for just $699!

So, save thousands of dollars by getting all your tools at once with our 30% off Mega Pack Special now.

Hurry, promotion ends 1 Feb 2012!

Data Products Visual Controls Community Store
LightSpeed ORM
NHibernate Designer
SimpleDB Tools
SharePoint Tools
WPF Elements
WPF Diagrams
Silverlight Elements
Forums
Blog
Register
Login
Subscribe to newsletter
Buy Now
My Account
Volume Discounts
Purchase Orders
Contact Us