DataObjects.NET is object-to-database persistence layer for .NET. It transparently handles persistence of your classes allowing you to focus on the code. It handles all types of relations, automatically updates database schema, and much more.
This tool can be used for generating base code (data access layer, business logic layer, presentation layer, startup project) for multi-tier applications which work with databases.