Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC3访问控制器中的存储库_C#_Asp.net Mvc_Repository - Fatal编程技术网

C# MVC3访问控制器中的存储库

C# MVC3访问控制器中的存储库,c#,asp.net-mvc,repository,C#,Asp.net Mvc,Repository,谢谢你的帮助!我下面的解决方案已更新为正确答案 关于如何访问控制器的存储库,我有一个简单的问题。如果您查看我的addMovie方法,我想我可以在ModelState.IsValid中执行movies.addMovie(movie)在控制器继承IMovieRepository后生效 iMovie存储库: public interface IMovieRepository : IDisposable { IEnumerable<Movies> GetMovies(); M

谢谢你的帮助!我下面的解决方案已更新为正确答案

关于如何访问控制器的存储库,我有一个简单的问题。如果您查看我的addMovie方法,我想我可以在ModelState.IsValid中执行movies.addMovie(movie)在控制器继承IMovieRepository后生效

iMovie存储库:

public interface IMovieRepository : IDisposable
{
    IEnumerable<Movies> GetMovies();
    Movies GetMovieByID(int id);
    void AddMovie(Movies movie);
    void UpdateMovie(Movies movie);
    void DeleteMovie(int id);
    void save(Movies movie);
}
public class MovieRepository : BaseRepository, IMovieRepository
{
    private MovieContext db;

    public MovieRepository(MovieContext repo)
    {
        db = repo;
    }

    public IEnumerable<Movies> GetMovies()
    {
        return db.Movies.ToList();
    }

    public Movies GetMovieByID(int id)
    {
        return db.Movies.Find(id);
    }

    public void AddMovie(Movies movie)
    {
        db.Movies.Add(movie);
    }

    public void UpdateMovie(Movies movie)
    {
        db.Entry(movie).State = EntityState.Modified;
    }

    public void DeleteMovie(int id)
    {
        Movies movie = db.Movies.Find(id);
        db.Movies.Remove(movie);
    }

    public void save(Movies movie)
    {
        if (movie.movieID == 0)
            db.Movies.Add(movie);
        else
            db.Entry<Movies>(movie).State = System.Data.EntityState.Modified;

        db.SaveChanges();
    }
}

}您需要向控制器添加构造函数:

public class MoviesController : Controller
{
    private IMovieRepository movieRepository;

    public MoviesController()
    {
        this.movieRepository = new MovieRepository(new MovieContext());
    }

    public MoviesController(IMovieRepository movieRepository)
    {
        this.movieRepository = movieRepository;
    }
    #region "GET"
    //
    // GET: /Admin/Movies/

    public ActionResult Index()
    {
        return View();
    }
    #endregion

    #region "POST"
    [HttpPost]
    public ActionResult addMovie(Movies movie)
    {
        if (ModelState.IsValid)
        {
            movieRepository.AddMovie(movie);
            movieRepository.save(movie);
            return RedirectToAction("index", "movies");
        }
        return View(movie);
    }
    #endregion
}
private IMovieRepository _Repository;

[Inject]
public MovieController(IMovieRepository repository)
{
    _Repository = repository;
}

您需要向控制器添加构造函数:

public class MoviesController : Controller
{
    private IMovieRepository movieRepository;

    public MoviesController()
    {
        this.movieRepository = new MovieRepository(new MovieContext());
    }

    public MoviesController(IMovieRepository movieRepository)
    {
        this.movieRepository = movieRepository;
    }
    #region "GET"
    //
    // GET: /Admin/Movies/

    public ActionResult Index()
    {
        return View();
    }
    #endregion

    #region "POST"
    [HttpPost]
    public ActionResult addMovie(Movies movie)
    {
        if (ModelState.IsValid)
        {
            movieRepository.AddMovie(movie);
            movieRepository.save(movie);
            return RedirectToAction("index", "movies");
        }
        return View(movie);
    }
    #endregion
}
private IMovieRepository _Repository;

[Inject]
public MovieController(IMovieRepository repository)
{
    _Repository = repository;
}
使用构造函数注入


使用构造函数注入

谢谢,修复了它![Inject]做什么?因为您使用的是Ninject,所以需要该属性,以便Ninject知道依赖项注入发生在哪里。否则,您会得到一个错误,说您需要一个无参数构造函数。谢谢,这就解决了它![Inject]做什么?因为您使用的是Ninject,所以需要该属性,以便Ninject知道依赖项注入发生在哪里。否则,您将得到一个错误,说明您需要一个无参数构造函数。您不应该将问题更改为您的解决方案。这不允许其他人从问题/答案中获益。如果您想包含答案,请将其添加到问题的末尾。您不应将问题更改为您的解决方案。这不允许其他人从问题/答案中获益。如果你想包括答案,那么把它添加到问题的末尾。