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

"Connection" メソッドの戻り値の型は、" context.CreateObjectSet<Movie>()" メソッド呼び出しの戻り値の型でなければなりません。これはObjectSet<Movie>

于 2012-07-12T09:44:06.197 に答える
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>();
    }
}

次に、マネージャーをコントローラーに挿入し、そこから必要なセットを解決します。自動的に呼び出されるusingように、データベース オブジェクトをブロックにラップすることを忘れないでください。Dispose

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 に答える
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 に答える