Step2. Add the EntityFramework reference using NuGet Package Manager
Step3. Create AppDbContext class file inside the Models folder.
using System.Data.Entity;
namespace WebAPI2021.Models
{
public class AppDbContext:DbContext
{
public AppDbContext()
{
}
public DbSet Employees { get; set; }
}
}
Step4. Create an Employee model inside the Models folder.
namespace WebAPI2021.Models
{
public class Employee
{
public int Id { get; set; }
public string Name{ get; set; }
public int Age { get; set; }
}
}
Step5. Add the following inside the web.config file.
<connectionstrings>
<add connectionstring="data source=IN-AJEET-LT\SQLEXPRESS;database=APIDB;Integrated Security=SSPI" name="AppDbContext" providername="System.Data.SqlClient">
</add></connectionstrings>
Step6. Run NuGet command: Enable-Migrations command
Step7. Run NuGet command: Add-Migration firstly
Step8. Run NuGet command: Update-database
Step9. Create a Log folder inside the project root and place a Log.txt file. Exclude the Log folder from the project and again Include the Log folder in Project.
Step10. Create ActionLogs class file inside the Models folder.
using System;
using System.IO;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace WebAPI2021.Models
{
public class ActionLogs: ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
WriteLog(string.Format("Action method {0} is executing at {1}", actionContext.ActionDescriptor.ActionName, DateTime.Now.ToString()));
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
WriteLog(string.Format("Action method {0} executed at {1}", actionExecutedContext.ActionContext.ActionDescriptor.ActionName, DateTime.Now.ToString()));
}
public void WriteLog(string logText)
{
File.AppendAllText(HttpContext.Current.Server.MapPath("~/Log/Log.txt"),logText +"\n");
}
}
}
Step11. Create web API EmployeeController inside Controllers folder.
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using WebAPI2021.Models;
namespace WebAPI2021.Controllers
{
[ActionLogs]
public class EmployeeController : ApiController
{
public IEnumerable Get()
{
using (AppDbContext db = new AppDbContext())
{
return db.Employees.ToList();
}
}
[Route("api/Employee/{id:int}")]
public Employee Get(int id)
{
using (AppDbContext db = new AppDbContext())
{
var emp = db.Employees.FirstOrDefault(e => e.Id == id);
return emp;
}
}
[Route("api/Employee/{name}")] //template in quotes
public Employee Get(string name)
{
using (AppDbContext db = new AppDbContext())
{
var emp = db.Employees.FirstOrDefault(e => e.Name.ToLower() == name.ToLower());
return emp;
}
}
[Route("Employee/{name}")] //template in quotes, if api/ is not needed
public Employee GetbyName(string name)
{
using (AppDbContext db = new AppDbContext())
{
var emp = db.Employees.FirstOrDefault(e => e.Name.ToLower() == name.ToLower());
return emp;
}
}
}
}
Edited on 6th July 2023
No comments:
Post a Comment