title: Implement data access layer best practices in .net Project MVC
body: <p>I would like to improve my .NET project by adding another layer when accessing the database. This is my code:</p>
  
  <pre><code>namespace Company.Models
  {
  public static class AgencyBean
  {
  [WebMethod]
      [ScriptMethod(UseHttpGet = true)]
      public static String createGUID(string name)
      {
         DataAccess dataAccess = new DataAccess();
         bool exists = dataAccess.checkIfExists(Id);
         if(exist)
         {
             dataAccess.delete(Id);
         }
         retur "ok";
      }
   }
  }
  </code></pre>
  
  <p>I placed DataAccess class in a separate folder called "Helpers" and it contains most of my queries:</p>
  
  <pre><code>public class DataAccess
   {    
  public bool checkIfExists(String Id)
      {
          try
          {
              SqlConnection cnn = new SqlConnection(dataConnection);
              cnn.Open();
              SqlCommand check_Id = new SqlCommand("SELECT COUNT(*) FROM TABLE_GUID WHERE ([USER_ID] = @Id)", cnn);
              check_Id.Parameters.AddWithValue("@Id", Id);
              int UserExist = (int)check_Id.ExecuteScalar();
  
              if (UserExist &gt; 0)
              {
                  return true;
              }
              else
              {
                  return false;
              }
          }
          catch (SqlException ex)
          {
              Debug.WriteLine("SQL Exception " + ex);
              DisplaySqlErrors(ex);
              throw ex;
          }
      }
   }
  
  public class AgentBeanController : Controller
  {
      // GET: AgentBean
      public ActionResult Index(string name)
      {
          return View();
      }
  
      [AllowAnonymous]
      [WebMethod]              
      public string AgentURL()  //here we create Agent URL and return it to the view
      {
          string var = Models.AgentBean.createGUID("TODO");            
          return var;           
      }
  
  
  }
  </code></pre>
  
  <p>I'm accessing the database pretty much in very direct way. How would it be with a better technique, so this access can be more secure, like accessing thru a service layer?
  I'm connecting to a existing sql database in some server and working with MVC architecture in my project.</p>