【问题标题】:How to create Delete method for Repository and Controller>如何为 Repository 和 Controller 创建 Delete 方法>
【发布时间】:2022-01-16 03:23:23
【问题描述】:

这是我的界面

 public interface ISuperHeroRepo
    {

        Task<List<SuperHero>> GetAll();
        Task<SuperHero> GetById(int id);
        Task<SuperHero> Create(SuperHero superHero);
        Task<SuperHero> Update(SuperHero superHero);
        void Delete(int id);
     }

这是我的仓库

  public class SuperHeroRepo : ISuperHeroRepo
    {
        private readonly DataContext _ctx;

        public SuperHeroRepo(DataContext ctx)
        {
            _ctx = ctx;
        }




        public void Delete(int id)
        {
            //Cann't Implement
            throw new NotImplementedException();
        }

    }

这是我的控制器

 [Route("api/[controller]")]
    [ApiController]
    public class SuperHeroController : ControllerBase
    {
        private readonly ISuperHeroRepo _context;

        public SuperHeroController(ISuperHeroRepo context)
        {
            _context = context;
        }


       
        [HttpDelete("{id}")]
        public async Task<IActionResult> Delete(int id)
        {
           
            //cannt implement
        }




    }

我使用存储库模式。我想要 CURD 操作。我已经实现了 Create、update 和 Get 方法的代码。但是我无法实现存储库的代码和 Delete 方法的接口。任何人请帮助。 [我是初学者]

【问题讨论】:

  • 删除方法有什么不同,会给您带来麻烦?

标签: c# entity-framework asp.net-core asp.net-web-api


【解决方案1】:

我建议您阅读以下文章。 https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/crud?view=aspnetcore-6.0

我也会为你完成代码。

 public interface ISuperHeroRepo
    {
        Task<List<SuperHero>> GetAll();
        Task<SuperHero> GetById(int id);
        Task<SuperHero> Create(SuperHero superHero);
        Task<SuperHero> Update(SuperHero superHero);
        void Delete(SuperHero superHero);
        Task SaveChangesAsync();
     }

控制器:

   [Route("api/[controller]")]
[ApiController]
public class SuperHeroController : ControllerBase
{
    private readonly ISuperHeroRepo _context;

    public SuperHeroController(ISuperHeroRepo context)
    {
        _context = context;
    }


   
    [HttpDelete("{id}")]
    public async Task<IActionResult> Delete(int id)
    {
       var result  = await _context.GetById (id)
       _context.Delete(result);
       await _context.SaveChangesAsync();
    }
}

【讨论】:

  • 我想使用 repo patternt 那么 repository 的代码是什么?
  • 你看到我放的链接了吗?这是另一个参考dotnettutorials.net/lesson/…
【解决方案2】:

与其获取 SuperHero 来删除它,不如使用存根实体。

    public void Delete(int id)
    {
        var e = new SuperHero() {Id = id};
        _ctx.Set<SuperHero>().Remove(e);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2016-05-03
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多