// The return type can be changed to IEnumerable, however to support
 // paging and sorting, the following parameters must be added:
 //     int maximumRows
 //     int startRowIndex
 //     out int totalRowCount
 //     string sortByExpression
 public IQueryable<Message> lvMessages_GetData()
 {
     var db = new SimpleChatDbContext();
     return db.Messages
         .AsQueryable()
         .OrderByDescending(m => m.TimeStamp)
         .Take(100)
         .OrderBy(m => m.TimeStamp);
 }
 public void lvMessages_InsertItem()
 {
     var db = new SimpleChatDbContext();
     var item = new Message();
     TryUpdateModel(item);
     if (ModelState.IsValid)
     {
         item.TimeStamp = DateTime.Now;
         db.Messages.Add(item);
         db.SaveChanges();
     }
 }
 protected void SaveMessage_Click(object sender, EventArgs e)
 {
     var db = new SimpleChatDbContext();
     var item = new Message();
     item.TimeStamp = DateTime.Now;
     item.Author = this.Author.Text;
     item.Content = this.Content.Text;
     db.Messages.Add(item);
     db.SaveChanges();
     this.Author.Text = string.Empty;
     this.Content.Text = string.Empty;
     lvMessages.DataBind();
 }