Gentle.NET is an object persistence framework featuring a database-independent SQL factory, automatic SQL generation and object construction, a list class for managing 1:n and n:m relations, concurrency control, and DataView construction helpers.
Gentle.NET supports MS SQL Server, MS Access, Oracle, PostgreSQL (using the NPgSql provider included with Mono), MySQL (using the ByteFX data provider), Firebird and SQLite.

Sampel use:
[sourcecode language='c#']
[TableName]
public class User : Persistent
{
private int userId;
private string userName;

public User( int userId )
{
this.userId = userId;
if( userId != 0 ) // assume 0 is a non-identity for new objects
Broker.Refresh( this ); // retrieve the row and update properties
}

public User( string userName ) : this( 0, userName ) {}

public User( int userId, string userName )
{
this.userId = userId;
this.userName = userName;
}

[TableColumn("UserId"), PrimaryKey(AutoGenerated=true)]
public int Id
{
get{ return userId; }
set{ userId = value; }
}

[TableColumn(NotNull=true)]
public string Name
{
get{ return userName; }
set{ userName = value; }
}
}

User ford = new User( "Ford Prefect" );
ford.Persist(); // save the new user and assign an id value
User prefect = new User( ford.Id ); // retrieve the existing user
[/sourcecode]

more ...