Model

public class News : Model<News>
{
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public string Content { get; set; }
}

Create

var n = new News();
n.Date = DateTime.Now;
n.Content = "A very big news today!";
n.Save();

Read

var news= News.Find(new { Id = 1 });
foreach (var n in news) {
    Console.WriteLine(n);
}

news = News.All();
foreach (var n in news) {
    Console.WriteLine(n);
}
news = News.Where(new { Category = "Science" })
    .OrderBy("Date", "DESC")
    .Result<News>();
news = News.Limit(3)
    .OrderBy("Date", "DESC")
    .Result<News>();

Update

var n = News.Read(new { Id = 1 });
n.Content = "Updated news content";
n.Update();

Delete

var n = News.Read(new { Id = 1 });
n.Delete();

Overriding Naming Convention

[Table("AdminNews")]
public class News : Model<News>
{
    [Column("NewsID")]
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public string Content { get; set; }
}

Validations

public class User : Model<User>
{
    [Required]
    public string Name { get; set; }
}

Migrations

public class _CreatePerson : Migration
{
    public _CreatePerson() : base("E96DF9E3-753F-4AF3-BF72-550209EBC8E2")
    {
    }

    public override void Up()
    {
        CreateTable("Person",
            Column("PersonID", DbType.Int32, true, true),
            Column("Name"),
            Column("Address"),
            Column("Age"));
    }

    public override void Down()
    {
        DropTable("Person");
    }
}

Adding Columns

Views