0

我添加了一个名为 Connect.cs 的类;

namespace MovieApp.DAL
{
   public class Connect
   {
      public Connection()  //my class needs to have a return type
      {
        var connStr = ConfigurationManager.ConnectionStrings["Entities"];
        ObjectContext context = new ObjectContext(connStr.ConnectionString);
        var movieContext = context.CreateObjectSet<Movie>();
        return movieContext;
      }
   }
}

然后我在我的控制器类中有:

namespace MovieApp.Controllers
{
    public class MovieController : Controller
    {
        public ActionResult Index()
       {
        Connect connection = new Connect(//and what will i put here??);
        var movies = connection.OrderBy(m => m.Title);
        return View(movies);
        }
}

显然我得到了错误,因为我不知道该怎么做。movieContext 是什么类型的?请问如何让这个代码工作?谢谢!

4

3 回答 3

0

“连接”方法的返回类型应该是“ context.CreateObjectSet<Movie>()”方法调用的返回类型;这是ObjectSet<Movie>

于 2012-07-12T09:44:06.197 回答
0

像这样的东西?

public ObjectSet<Movie> Connection()
{
    var connStr = ConfigurationManager.ConnectionStrings["Entities"];
    ObjectContext context = new ObjectContext(connStr.ConnectionString);
    var movieContext = context.CreateObjectSet<Movie>();
    return movieContext;
}

然后在你的控制器中:

public ActionResult Index()
{
    Connect connection = new Connect();
    var movies = connection.Connection().OrderBy(m => m.Title);
    return View(movies);
}
于 2012-07-12T09:45:36.927 回答
0

您的代码的问题是您没有指定Connection方法的返回类型。即public Connection()应该是public ObjectSet<T> Connection<T>()

您可以尝试这样的事情(用记事本编写的代码,因此只是为了演示这个想法)

public class ObjectContextManager
{
    public ObjectSet GetSet<T>()  
    {
        var connStr = ConfigurationManager.ConnectionStrings["Entities"];
        ObjectContext context = new ObjectContext(connStr.ConnectionString);
        return context.CreateObjectSet<T>();
    }
}

然后将管理器注入控制器并从那里解决所需的集合。不要忘记将数据库对象包装到一个usingDispose中,以便自动调用。

public class MovieController : Controller
{
    private ObjectContextManager ctxManager;

    public MovieController(ObjectContextManager ctxManager)
    {
        this.ctxManager = ctxManager;
    }

    public ActionResult Index()
    {
        using(var ctx = ctxManager.GetSet<Movie>())
        {
            var movies = ctx.OrderBy(m => m.Title);
            return View(movies);
        }
    }
}
于 2012-07-12T09:46:14.950 回答