• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ASP .Net błąd połączenia z bazą danych

0 głosów
306 wizyt
pytanie zadane 7 października 2020 w C# przez OlekS Początkujący (280 p.)

Hej, podczas tworzenia prostej strony która ma za zadanie wyświetlić z bazy danych liste filmów.

Ale po kompilacji wyskakuje błąd:

InvalidOperationException: Unable to resolve service for type 'Filmoteka.Repositiores.IFilmRepositiores' while attempting to activate 'Filmoteka.Controllers.HomeController'.

public class HomeController : Controller
    {
        private readonly IFilmRepositiores _filmotekaRepositiores;

        public HomeController(IFilmRepositiores filmotekaRepositiores)
        {
            _filmotekaRepositiores = filmotekaRepositiores;
        }

        // GET: HomeController
        public ActionResult Index()
        {
            return View(_filmotekaRepositiores.GetFilms());
        }

        // GET: HomeController/Details/5
        public ActionResult Details(int id)
        {
            return View(_filmotekaRepositiores.Get(1));
        }

        // GET: HomeController/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: HomeController/Create
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(IFormCollection collection)
        {
            try
            {
                return RedirectToAction(nameof(Index));
            }
            catch
            {
                return View();
            }
        }

        // GET: HomeController/Edit/5
        public ActionResult Edit(int id)
        {
            return View(id);
        }

        // POST: HomeController/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(int id, FilmModel film)
        {

            _filmotekaRepositiores.Update(id, film);
                return RedirectToAction(nameof(Index));
        }

        // GET: HomeController/Delete/5
        public ActionResult Delete(int id)
        {
            return View(id);
        }

        // POST: HomeController/Delete/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Delete(int id, IFormCollection collection)
        {
            _filmotekaRepositiores.Delate(id);
                return RedirectToAction(nameof(Index));
        }
public class FilmRepositiores : IFilmRepositiores
    {
        private readonly FilmotekaContext _context;

        public FilmRepositiores(FilmotekaContext context)
        {
            _context = context;
        }

        public void Add(FilmModel film)
        {
            _context.films.Add(film);
            _context.SaveChanges();
        }

        public void Delate(int id)
        {
            var result = _context.films.SingleOrDefault(x => x.FilmID == id);

            if (result != null)
            {
                _context.films.Remove(result);
                _context.SaveChanges();
            }
        }

        public FilmModel Get(int id) => _context.films.SingleOrDefault(x => x.FilmID == id);

        public IQueryable<FilmModel> GetFilms()
        {
            var films = from f in _context.films
                         select f;
            return films;
        }

        public void Update(int id, FilmModel film)
        {
            var result = _context.films.SingleOrDefault(x => x.FilmID == id);

            if (result != null)
            {
                result.origi_title = film.origi_title;
                result.pol_title = film.pol_title;
                result.year = film.year;
                result.Description = film.Description;
            }
        }
public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddDbContext<FilmotekaContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("FilmotekaDatabase")));
        }
public class FilmotekaContext : DbContext
    {
        public FilmotekaContext(DbContextOptions options) : base(options)
        {

        }

        public DbSet<FilmModel> films { get; set; }
    }
[Table("FilmsTable")]
    public class FilmModel
    {
        [Key]
        public int FilmID { get; set; }

        [Required(ErrorMessage = "Pole jest wymagane")]
        [DisplayName("Tytuł orginalny")]
        [MaxLength(50)]
        public string origi_title { get; set; }

        [Required(ErrorMessage = "Pole jest wymagane")]
        [DisplayName("Tytuł polski")]
        [MaxLength(50)]
        public string pol_title { get; set; }

        [DisplayName("Rok")]
        public DateTime year { get; set; }

        [DisplayName("Opis")]
        [MaxLength(200)]
        public string Description { get; set; }
    }

Pomoże ktoś?

komentarz 7 października 2020 przez kubaapk Nałogowiec (44,270 p.)
Zarejestrowałeś serwis w kontenerze ioc?

1 odpowiedź

0 głosów
odpowiedź 7 października 2020 przez kukulim Mądrala (6,440 p.)
wybrane 30 października 2020 przez OlekS
 
Najlepsza

Chyba brakuje Ci w Startup

services.AddScoped<IFilmRepositiores, FilmRepositiores>();

 

Ps. A tu masz chyba buga:

        public ActionResult Details(int id)
        {
            return View(_filmotekaRepositiores.Get(1));
        }

//powinno raczej być
        public ActionResult Details(int id)
        {
            return View(_filmotekaRepositiores.Get(id));
        }

 

komentarz 7 października 2020 przez OlekS Początkujący (280 p.)
Dzięki już działa

Podobne pytania

0 głosów
0 odpowiedzi 233 wizyt
pytanie zadane 7 grudnia 2020 w C# przez dz3101 Nowicjusz (220 p.)
0 głosów
0 odpowiedzi 659 wizyt
+1 głos
0 odpowiedzi 336 wizyt
pytanie zadane 4 marca 2024 w C# przez drewienko Nowicjusz (130 p.)

93,758 zapytań

142,716 odpowiedzi

323,364 komentarzy

63,357 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...