有人可以帮忙吗?
我的控制器中有创建动作:
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;
}
}
它没有保存新的添加,我有什么错? 非常感谢。
答案 0 :(得分:1)
每次调用connection()时,它都会创建另一个实例。一旦你添加了另一个新记录,你就会尝试保存但不同的上下文。 将其更改为属性,以便保存上下文。
答案 1 :(得分: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>();
}
}