PLINQO LINQ to SQL and nHibernate ORM Code Generators
In my quest for the perfect Object Relational Mapper (ORM) for a major upcoming project utilizing SQL Server 2008, I was torn between using LINQ to SQL versus nHibernate.
Microsoft has burned us in the past with their data access strategies and then dropping them to support their newest ideas. A few years back, Microsoft developed Data Set Table Adapters. I was one of the first on board, writing projects and blog posts utilizing this new technology. But I attended a Heroes Happen Here event and the MS speaker told everyone all about LINQ to SQL. I asked him after the meeting, what about the Table Adapters? I was told to stop using them immediately and start using LINQ to SQL. So I got on board with LINQ to SQL, but it was not ready for prime time at all and very limited. There was no way a developer could even think to release production code using LINQ to SQL. LINQ to Entities then came out, but was bloated and again not ready.
I decided to check out CodeSmith's Generator tools. I worked on a project a few years ago that used CodeSmith to generate the ORM and I was very impressed.
The CodeSmith Frameworks include PLINQO, a LINQ to SQL generator tool, as well as an nHibernate generator for your nHibernate XML mapping files, business objects, manager objects, etc.
What really impressed me about PLINQO is that it handles the short-comings of LINQ to SQL. What really frustrated me about the LINQ to SQL designer in Visual Studio was that it loses your updates when you have to refactor database changes. But PLINQO preserves your manual changes when resyncing the database.
Another feature that looks very impressive is the Enum Generation. I use enums quite frequently and even keep a table to store my enumerations. With PLINQO, I can generate enums easily from my table data.
LINQ to SQL doesn't support many to many relationships, but PLINQO supports many to many relationships.
PLINQO allows multiple updates and deletes based on a filter, something not offered in LINQ to SQL.
The PLINQO team has implemented many features that provide optimization and improve performance.
Be sure to look at the PLINQO feature tour for additional features such as Caching, Auditing, Rules Engine, Futures, Query Extensions, Enum Generation, Customization & Refactoring, Many to Many Relationships, Data Services & WCF, Performance Improvements to LINQ to SQL, and the LINQ to SQL Profiler.
Classes are generated in your choice of C# or VB.NET. The CodeSmith team has been around for a long time and I'm sure will continue to make improvements. What appeals to me about the CodeSmith product is that PLINQO is just one piece of it; and if I need to map to an Oracle database, I can use the nHibernate code generator.
CodeSmith's website even says that when the "Entity Framework stops sucking," they will support it as well. So, with the release of Visual Studo 2010, the 4.0 Framework and Entity Framework, I asked CodeSmith about their promised plans to support the Entity Framework. I was informed that they are currently working on a set of Entity Framework 4.0 templates and will release version 1.0 of these new templates in the next month or two. They are considering making these EF4 templates part of their PLINQO templates.
[SIGNATURE]