Download MongoDB from https://www.mongodb.com/what-is-mongodb
Install MongoDb nuget package: MongoDB.Driver (Author: rstam.craigwilson)
Service
______________________________________________________________________
public interface IMongoService{
Employee CreateEmployee(Employee employee);
void Delete(string id);
Employee GetEmployeeById(string id);
List<Employee> GetEmployees();
Employee Update(Employee employee);
}
public class MongoService : IMongoService
{
IMongoCollection<Employee> _mongoCollection;
public MongoService(IOptions<EmpDatabaseSettings> options)
{
Options = options;
var client = new MongoClient(options.Value.ConnectionString);
var database = client.GetDatabase(options.Value.DatabaseName);
_mongoCollection = database.GetCollection<Employee>(options.Value.EmpCollectionName);
}
public IOptions<EmpDatabaseSettings> Options { get; }
public List<Employee> GetEmployees()
{
return _mongoCollection.Find(i => true).ToList();
}
public Employee GetEmployeeById(string id)
{
return _mongoCollection.Find(i => i.Id.Equals(id)).FirstOrDefault();
}
public Employee CreateEmployee(Employee employee)
{
_mongoCollection.InsertOne(employee);
return employee;
}
public Employee Update(Employee employee)
{
_mongoCollection.ReplaceOne(i => i.Id.Equals(employee.Id), employee);
return employee;
}
public void Delete(string id)
{
_mongoCollection.DeleteOne(i => i.Id.Equals(id));
}
__________________________________________________________________
Controller
[Route("api/Employee")]
[ApiController]
public class ValuesController : ControllerBase
{
public IMongoService MongoService { get; }
public ValuesController(IMongoService mongoService)
{
MongoService = mongoService;
}
[HttpGet()]
public IActionResult GetAllEmployees()
{
try
{
return Ok(this.MongoService.GetEmployees());
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
[HttpGet("{id}")]
public IActionResult GetEmployeeById(string id)
{
try
{
return Ok(this.MongoService.GetEmployeeById(id));
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
[HttpPost()]
public IActionResult CreateEmployee([FromBody]Employee employee)
{
try
{
return Ok(this.MongoService.CreateEmployee(employee));
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
[HttpPut()]
public IActionResult UpdateEmployee([FromBody]Employee employee)
{
try
{
return Ok(this.MongoService.Update(employee));
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
[HttpDelete("{id}")]
public IActionResult DeleteEmployee(string id)
{
try
{
this.MongoService.Delete(id);
return Ok();
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
}
__________________________________________________________________
classes
public class Employee
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Details Details { get; set; }
}
public class Details
{
public string City { get; set; }
public string Address { get; set; }
}
___________________________________________________________
Appsettings.json
"EmpDatabaseSettings": {
"EmpCollectionName": "Employee",
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "EmployeeDB"
},
public class EmpDatabaseSettings
{
public string EmpCollectionName { get; set; }
public string ConnectionString { get; set; }
public string DatabaseName { get; set; }
}
____________________________________________________________________
Strartup.cs
Inside ConfigureServices (Register these dependencies)
services.Configure<EmpDatabaseSettings>(this.Configuration.GetSection(nameof(EmpDatabaseSettings)));
services.AddTransient<IMongoService, MongoService>();
Comments
Post a Comment