I had a requirement to find Code Generator that will help to port existing quite big Access application to ASP.NET and support multiple databases.
The codegeneration.net site provides quite a big list of applications that claims to do this.
I also was pointed by Paul Wilson’s posts: (How do you decide what features to add or cut?, Debate: O/R Mapping or Code Generation and others) that Dynamic SQLs in O/R mappers allow to avoid hundreds of CRUD stored procedures and DAL classes.
Unfortunately, most of O/R Mapper tool have nothing with web site generation. And most of ASP.Net generators do not use dynamic SQL, but generate stored procedures.
Only two products seem to do both: TierDeveloper–Alachisoft and EntitySpaces.
After downloading TierDeveloper I understood that they generate static parameterized SQL, not using O/R engine generates queries at runtime. Also tehASP.NET pages they generated are quite messy.
The demo version of EntitySpaces Template Suite for ASP.NET looks very good, and they also have DNN templates, which is important for my development.
So it seems that EntitySpaces is the best choice for my project. (Touch the wood, 2 years ago I choose VBExpress generator and I am not much happy with that my choise).
UPDATE 29/12/2007: At the moment I am using EntitySpaces and quite happy with them.
I am going to try LINQ to SQL : Related links:
Linq to Sql: The Good, The Bad & The Bottom Line
See also Linq to Entities
Below are differnet links that I’ve used for this research.
1 Web Site ORM and Generators
a free 45 day Trial Version
an object-to-relational mapping and code generation tool.
Dynamic SQL –actually generated in Data.Persistence.Factory.
Templates ASPX, not asmx
2 Web Site Generators
Cost CodeCharge Studio 3.1 $499
Tried to run against the database.. It stops for each table without primary key and asks to uncheck the table. It was too annoying to continue.
2.2 ASP.NET Maker
Fully working version for 30 days Downloaded
2.3 . Codejay
2.4 GenWise Studio
Template-based code generator / IDE for ASP.NET with NHibernate support.
For use with o.a. SQL Server, Oracle, Sybase and MySql.
2.5 Iron Speed Designer
an application generator that builds database-driven Web applications for .NET
2.6 Web Application Code Generator by Gigaframe
No templates, no trial download $129
Use templates, Code Generator
2.8 CodeSmith -netTiers Application Framework
3 O/R mappers
Blog overview “looking for a good ORM” http://www.bzdz.com/topic/view/14/
Discussions here http://www.theserverside.net/news/thread.tss?thread_id=29914
3.2 Wilson WebPortal ORMapper
Lesser GPL Licence –is it acceptable?
Support for ASP.NET -No, objects do not have a temporal primary key, they only get a primary key when saved so it is hard (impossible?) to reference them from controls like the Web DataGrid?, you have to add manually support for temporal primary key… or save to the database on each request/response cycle.
Manual creation of Business Objects.
EntityBroker: Yes objects do have a temporal primary key, they get it when they are created in memory so it is easy to reference them from controls like the Web DataGrid?, and save only when the business transaction is ready.
3.5 TechTalk’s Genome
Support for Microsoft SQL, Oracle and IBM DB2
can switch to LINQ
3.6 Frameworks included in the Object Relational Tool Comparison
- AtomsFramework – http://jcframework.sourceforge.net/ – Author Recommends NHibernate
- GentleNet (Gentle.NET) – http://sf.net/projects/gopf – Paul Wilson– Nhibernate better
- iBATIS.NET – http://www.ibatis.com/ – Stores SQL commands in Mapper file-good http://opensource.atlassian.com/confluence/oss/display/IBATIS/Quick+Start+Guide
- NHibernate –see above 8.1
- Neo – http://neo.codehaus.org/ – Open Source
- NPersist – http://www.npersist.com/ – Open Source
- OJB.NET – http://ojb-net.sourceforge.net/ – Open Source
- LLBLGen Pro – http://www.llblgen.com/ – Closed Source
- EntityBroker – http://www.thona-consulting.com/ – Closed Source
- Vanatec OpenAccess – http://www.vanatec.com/ – Closed Source, Source Code available
39. Support for ASP.NET (It means it plays well with the request/response cycle, allows saving objects in the session, unsaved objects have temporary in memory primary keys that allow transactions spanning multiple requests/responses without writing the transaction into the database, etc)(Visually?, Out of the box).
- AtomsFramework: Unknown
- GentleNet: Yes, although objects are uniquely identified by the primary key fields, which can be initialized from code or on insert. However, there is special support for caching and uniqing to ensure safe operation in ASP.NET environments.
- NeoFramework: Unknown
- OJB.NET: Unknown
- LLBLGen Pro: Yes, fully supports ASP.NET 2.0 with own datasource control and 2-way databinding. Also fully support for ASP.NET 1.x and object serialization in viewstate/session.
- NHibernateLibrary: No, objects do not have a temporal primary key, they only get a primary key when saved so it is hard (impossible?) to reference them from controls like the Web DataGrid?, you have to add manually support for temporal primary key… or save to the database on each request/response cycle.
- Vanatec OpenAccess: Yes
development of data and business tiers of the database application
3.9 Castle ActiveRecord
Castle ActiveRecord is built on top of NHibernate, but its attribute-based mapping free the developer of writing XML for database-to-object mapping, which is needed when using NHibernate directly