This is my fourth post on Entity Developer, Devart’s O/RM tool for NHibernate, Entity Framework and LINQ to SQL. The first post was an introduction to Entity Developer and a general description of its usage, the second was focused on NHibernate and the third on Entity Framework. This time I am going to cover some aspects that were not mentioned in the previous posts.
Entity Developer supports several ADO.NET providers:
- SQL Server
I noticed that some options, namely, the ability to connect to certain databases or to reverse engineer from them, is only present if a suitable ADO.NET provider is found. The mapping between .NET types and database-specific ones is configurable.
There are several editions of Entity Developer available, some only cover a specific product (Entity Framework, NHibernate or LINQ to SQL) and the Professional one covers them all. There’s also the free Express edition, which has some limitations, namely regarding the number of entities supported (a short number) and the unavailability of custom templates.
There are some very cool features available in NHibernate projects, such as being able to select whether an enumeration will be persisted as an integer or as a string, the default collection type (set or bag), default cascade option (odd, delete-orphan is missing), the default identifier generator – with specific options for each included generator that supports them -, access for properties, the default laziness, etc. If required, it will generate classes as partial, with a partial OnCreated method that can be implemented in a separate file, this is very useful to avoid messing with the generated files. The ability to have classes implement INotifyPropertyChanged (also with partial methods) and ICloneable (shallow copy) is also nice, as is the option to add regular serialization and WCF Data Contract attributes. Finally, I also find interesting the possibility to implement validation using one of three validation frameworks: NHibernate Validator, Data Annotations Validation and Enterprise Library Validation Application Block. Supported automatic validations include range, length, mandatory, email, IP address, numeric and regular expression but also NHibernate’s built-in validation mechanism (IValidatable). For NHibernate and Entity Framework projects, it is possible to specify stored procedures for an entity’s basic operations (CRUD) and to map the results of stored procedures to model entities. In general, NHibernate projects offer far more options than the others, because the underlying library also does.
The help system (classic Windows Help) is comprehensive and includes both a reference as well as walkthroughs. There is a User Voice page for taking user suggestions (https://devart.uservoice.com/forums/38671-entity-developer) and an online forum (http://forums.devart.com/viewforum.php?f=32) which appears to have some activity.
It is possible to run LINQ and Entity-SQL queries against model entities directly on the application. This can provide a helpful insight on the state of the mappings and is a welcome feature.
The Designer windows can be configured as per the default size (A4, etc), background color, header and footer, orientation, margins, etc. These are mostly used for printing. There’s also a skin mechanism, but I honestly haven’t used it. It is possible to snap to a configurable virtual grid, for a more tidy model. Zooming and coloring the entities differently is supported. Having multiple Designer windows is a must have for large models, and it works well.
Visual Studio Integration
The integration with Visual Studio is functional and meets its expectations. I would also like to see an easy option for debugging T4 templates.
I enjoyed using Entity Developer, it is one of the few currently available O/RM modeling tools for .NET with a commercial license, which also offers a free edition. It is definitely a possibility to be considered when working with big models, because, for once, it is simply not feasible to reverse engineer tens of database tables by hand. I would like to have command line support (couldn’t find references to it) because it would be helpful for refreshing models and generating SQL or database objects. Other than that, I think the product is very complete and can easily match or even surpass its adversaries.
Do let me know if there is anything unclear or if you want some more details, but don’t forget that I don’t work or am in any way affiliated with Devart, so I may not be able to help you!