@DD-var

Как передать context в контроллер?

Имеется модель book,репозиторий и bdcontext. как через репозиторий работать с контроллером?

book:

 public class book
    {
        [Key]
        public int ID { get; set; }
        public string Name { get; set; }
        public string Author { get; set; }
        public string description { get; set; }
        public int count { get; set; }
        public string PhotoPath { get; set; }
        public Genre? genres { get; set; }
    }

interface
interface IBookView<T>  where T : class
    {
        IEnumerable<T> GetBooksList();
        book objectBook(int bookid);

        void Add(T item);
        void delete(int id);
        void update(T item);
        void Save();
    }

dbcontext:
public class BooksContext : DbContext
    {
       
        public DbSet<book> Books { get; set; }


        //public BooksContext()
        //{
        //    Database.EnsureCreated();
        //}

        public BooksContext(DbContextOptions<BooksContext> options)
            : base(options)
        {

            Database.EnsureCreated();

        }



    }

repository
public class BookRepository : IBookView<book>
    {
        private readonly BooksContext db;

        public BookRepository(BooksContext context)
        {
            db =context;
        }

        public IEnumerable<book> GetBooksList()
        {
            return db.Books;
        }

        public book objectBook(int bookid) 
        {
            return db.Books.Find(bookid);
        }

        public void Add(book books)
        {
            db.Books.Add(books);
         
        }
        public void update(book books)
        {
            db.Entry(books).State = EntityState.Modified;

      
        }
      

        public void delete(int id)
        {
            book books = db.Books.Find(id);
            if (books != null)
                db.Books.Remove(books);

        }

        public void Save()
        {
            db.SaveChanges();
        }

        
    }
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
startup.cs
public void ConfigureServices(IServiceCollection services)
        {
            var con = _configuration.GetConnectionString("telemetry");
            services.AddDbContext<TelemetryContext>(options => options.UseSqlServer(con));
}


TelemetryController

[ApiController]
    [Route("api/[controller]")]
    public class TelemetryController : ControllerBase
    {
        private const int Interval = 15;
        private readonly TelemetryContext _ctx;
        public TelemetryController(TelemetryContext context)
        {
            _ctx = context;
        }
        [HttpPost]
        [ProducesResponseType(StatusCodes.Status201Created)]
        [ProducesResponseType(StatusCodes.Status400BadRequest)]
        [ProducesResponseType(StatusCodes.Status500InternalServerError)]
        public async Task<IActionResult> Post(TelemetryModel model)
        {
            if (ModelState.IsValid)
            {
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы