1

有人可以帮忙吗?

我的控制器中有创建操作:

  public class MovieController : Controller
  {
      Connect connection = new Connect();
      Movie movie = new Movie();

      [HttpPost]
      public ActionResult Create(Movie moviecreated)
      {
        try
        {
            // TODO: Add insert logic here
            connection.Connection().AddObject(moviecreated);
            connection.Connection().Context.SaveChanges();
            return RedirectToAction("Index");
        }
        catch
        {
            return View(movie);
        }
       }
    }

我的连接类

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

它没有保存新添加的内容,我做错了什么?非常感谢。

4

2 回答 2

1

每次调用 connection() 时,它都会创建另一个实例。一旦添加新记录 another ,您将尝试保存但不同的上下文。将其更改为属性并保存您的上下文。

于 2012-07-12T12:36:25.370 回答
1

尝试这个:

public class MovieController : Controller
{
  private Connect connection;
  private Movie movie;

  public MovieController() 
  {
       this.connection = new Connect();
       this.movie = new Movie();
  }

  [HttpPost]
  public ActionResult Create(Movie moviecreated)
  {
    try
    {
        // TODO: Add insert logic here
        this.connection.MovieContext.AddObject(moviecreated);
        this.connection.MovieContext.Context.SaveChanges();
        return RedirectToAction("Index");
    }
    catch
    {
        return View(movie);
    }
   }
}


public class Connect
{
    private ObjectSet<Movie> movieContext;

    public ObjectSet<Movie> MovieContext 
    {
        get
        {
            if (this.movieContext == null) 
            { 
                this.SetMovieContext(); 
            }

            return this.movieContext;
        }
    }

    public void SetMovieContext() 
    { 
        var connStr = ConfigurationManager.ConnectionStrings["Entities"]; 
        var context = new ObjectContext(connStr.ConnectionString); 
        this.movieContext = context.CreateObjectSet<Movie>(); 
    } 
}
于 2012-07-12T12:46:22.417 回答