public List <Student> GetStudentByName(string name)
        {
            var         students = new List <Student>();
            ObjectCache cache    = MemoryCache.Default;

            //read form cache
            if (cache.Contains("StudentsTable"))
            {
                return((List <Student>)cache.Get("StudentsTable"));
            }
            const string commandText = "Select * from Students where FirstName=@name";

            using (var connection = ConnFactory.CreateOpenConnection())
                using (var command = CmdFactory.CreateCommand(connection, commandText,
                                                              new SqlParameter("@name", name)))
                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            students.Add(new Student
                            {
                                FirstName   = reader.GetString("FirstName"),
                                LastName    = reader.GetString("LastName"),
                                DateOfBirth = reader.GetDateTime("DateOfBirth")
                            });
                        }
                        //Add to cache
                        cache.Add("StudentsTable", students, new CacheItemPolicy
                        {
                            AbsoluteExpiration = DateTime.Now.AddMinutes(10)
                        });
                    }
            return(students);
        }
 public void InsertStudent(Student student)
 {
     using (var connection = ConnFactory.CreateOpenConnection())
         using (var command = CmdFactory.CreateStoredProcedure(connection, "sp_InsertStudent",
                                                               new SqlParameter("@FirstName", student.FirstName),
                                                               new SqlParameter("@LastName", student.LastName),
                                                               new SqlParameter("@DateOfBirth", student.DateOfBirth)))
         {
             command.ExecuteNonQuery();
         }
 }