2015-02-09 88 views
-1

我想创建一个没有实体框架的MVC项目,并且出现此错误。没有为此对象定义的无参数构造函数。我在C#中很新,我想要一些帮助。这里是我的代码: 首先,模型Movies.cs没有为此对象定义的无参数构造函数 - MVC项目

using System; 
using System.Collections.Generic; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Web; 

namespace MyMovies.Models 
{ 
    public class Movie 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public DateTime ReleaseDate { get; set; } 
     public string Genre { get; set; } 
     public decimal Price { get; set; } 
     public string Rating { get; set; } 
    } 

    public interface IMovieRepository 
    { 
     IEnumerable<Movie> Get(); 

    } 

    public class MovieDBRepository : IMovieRepository 
    { 
     public IEnumerable<Movie> Get() 
     { 
      string connectionString = "Connection"; 
      using (var conn = new SqlConnection(connectionString)) 
      using (var cmd = conn.CreateCommand()) 
      { 
       conn.Open(); 
       cmd.CommandText = "SELECT ID, Title, Date, Genre, Rating"; 
       using (var reader = cmd.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         yield return new Movie 
         { 
          ID = reader.GetInt32(reader.GetOrdinal("ID")), 
          Title = reader.GetString(reader.GetOrdinal("name")), 
          ReleaseDate = reader.GetDateTime(reader.GetOrdinal("ReleaseDate")), 
          Genre = reader.GetString(reader.GetOrdinal("Genre")), 
          //Price = reader.GetFloat(reader.GetOrdinal.("Price")), 
          Rating = reader.GetString(reader.GetOrdinal("Rating")) 
         }; 
        } 
       } 
      } 
     } 
    } 
} 

,这是控制器

using MyMovies.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MyMovies.Controllers 
{ 
    public class MovieController : Controller 
    { 



     private readonly IMovieRepository repository; 
      public MovieController(IMovieRepository repository) 
      { 
       this.repository = repository; 
      } 
      // GET: Movie 
      public ActionResult Index() 
      { 
       var movie = this.repository.Get(); 
       return View(movie); 
      } 


      } 
    } 
+0

Movie类的定义是什么? – 2015-02-09 15:18:54

+0

使用像Ninject这样的DI容器来配置它(或者你可以编写你自己的'IDependencyResolver')。 – Styxxy 2015-02-09 15:20:37

+0

我该怎么做?我很抱歉,但我没有编程经验。 – Celia 2015-02-09 15:23:36

回答

2

,如果你没有一个依赖注入不能在指定的构造函数控制器的参数框架注册。

要么改变此:

 public MovieController(IMovieRepository repository) 
     { 
      this.repository = repository; 
     } 

 public MovieController() 
     { 
      this.repository = new MovieDBRepository(); 
     } 

或建立一个依赖注入引擎,如统一,Ninject,或fFastInjector。

+0

非常感谢你......它的工作原理! – Celia 2015-02-09 15:38:46

相关问题