A simple library for building SQL statements by entity class.
Entity definitions:
[TableMap( Name = "USERS" )]
public class User
{
[PKeyMap( Name ="ID")]
public int Id { get; set; }
[ColumnMap( Name ="FIRST_NAME")]
public string FirstName { get; set; }
[ColumnMap( Name = "LAST_NAME" )]
public string LastName { get; set; }
[ColumnMap( Name = "AGE" )]
public int Age { get; set; }
[ColumnMap( Name = "RoleID" )]
public Role Role { get; set; }
}
[TableMap( Name = "ROLES" )]
public class Role
{
[PKeyMap( Name = "ID" )]
public int Id { get; set; }
[ColumnMap( Name = "NAME" )]
public string Name { get; set; }
}
Usage:
var sqlBuilder = new SQLStatementBuilder();
var select = sqlBuilder.MakeSelect<User>( o => o.FirstName == "Antonio" || o.LastName == "Di Motta" && o.Age == 150 );
// Result:
// SELECT t1.ID,t1.FIRST_NAME,t1.LAST_NAME,t1.AGE,t1.RoleID FROM USERS t1
// WHERE (t1.FIRST_NAME = 'Antonio' OR (t1.LAST_NAME = 'Di Motta' AND t1.AGE = 150 ))
var join = sqlBuilder.MakeJoin<User,Role>( (u,r) => u.Role.Id == r.Id );
// Result:
// SELECT t1.ID,t1.FIRST_NAME,t1.LAST_NAME,t1.AGE,t1.RoleID,t2.ID,t2.NAME FROM USERS t1 INNER JOIN ROLES t2 ON t1.RoleID=t2.ID