在interface文件夹下创建IProductRepository.cs借口,爆红是我电脑问题,重启软件就好了
在service文件夹下创建ProductRepository.cs实现上边的接口
using System.Collections.Generic;
using NewFirst.Domain;
using NHibernate;
using NHibernate.Criterion;
namespace FirstSolution.Repositories
{
public class ProductRepository : IProductRepository
{
public Product Add(Product product)
{
object ret;
using (ISession session = NHibernateHelper.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
ret = session.Save(product);
transaction.Commit();
}
return ret;
}
public void Update(Product product)
{
using (ISession session = NHibernateHelper.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
session.Update(product);
transaction.Commit();
}
}
public void Remove(Product product)
{
using (ISession session = NHibernateHelper.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
session.Delete(product);
transaction.Commit();
}
}
public Product GetById(int id)
{
using (ISession session = NHibernateHelper.OpenSession())
return session.Get<Product>(id);
}
public Product GetByName(string name)
{
using (ISession session = NHibernateHelper.OpenSession())
{
Product product = session
.CreateCriteria(typeof(Product))
.Add(Restrictions.Eq("Name", name))
.UniqueResult<Product>();
return product;
}
}
public ICollection<Product> GetByCategory(string category)
{
using (ISession session = NHibernateHelper.OpenSession())
{
var products = session
.CreateCriteria(typeof(Product))
.Add(Restrictions.Eq("Category", category))
.List<Product>();
return products;
}
}
public List<Product> GetAll()
{
using (ISession session = NHibernateHelper.OpenSession())
{
var products = session
.CreateCriteria(typeof(Product))
.List<Product>();
return (List<Product>)products;
}
}
object IProductRepository.Add(Product product)
{
throw new System.NotImplementedException();
}
}
}
Contrllers文件夹下创建FirstController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using FirstSolution.Repositories;
using Microsoft.AspNetCore.Mvc.Filters;
using NewFirst.Domain;
namespace FirstSolution.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class FirstController : ControllerBase
{
private IProductRepository _service;
public FirstController(IProductRepository partService)
{
_service = partService;
}
[Route("Add")]
[HttpPost]
public ActionResult<Product> Post([FromBody] Product product)
{
var ret = _service.Add(product);
return Ok(ret);
}
[Route("Get")]
[HttpPut]
public ActionResult<Product> Put([FromBody] Product product)
{
_service.Update(product);
return Ok("");
}
[Route("Delete")]
[HttpDelete]
public ActionResult<Product> Delete([FromBody] Product product)
{
_service.Remove(product);
return Ok("");
}
[Route("GetByName/{name}")]
[HttpGet]
public ActionResult QueryExcludePartHold([FromRoute] string name)
{
var ret = _service.GetByName(name);
return Ok(ret);
}
[Route("GetById/{id}")]
[HttpGet]
public ActionResult QueryPartById([FromRoute] int id)
{
var ret = _service.GetById(id);
return Ok(ret);
}
[Route("GetByCategory/{category}")]
[HttpGet]
public ActionResult QueryPartByCategory([FromRoute] string category)
{
var ret = _service.GetByCategory(category);
return Ok(ret);
}
[Route("GetAll")]
[HttpGet]
public ActionResult QueryAllPart()
{
var ret = _service.GetAll();
return Ok(ret);
}
}
}
最后一步
完成