出现这个错误的原因是在控制器中初始化上下文StudentContext 时,在上下文的内部使用了如下方法:
namespace WebApi.Controllers
{
public class StudentsController : ApiController
{
private StudentContext db;
protected StudentsController()
{
db = new StudentContext();
Database.SetInitializer(new DbChange());
}
// GET: api/Students
[HttpPost,HttpGet]
public User.Models.Student GetStudents()
{
return db.Students.ToList().First();
}
public StudentContext() : base("name=StudentContext")
{
//错误原因
Database.SetInitializer(new DbChange());
Database.Initialize(true);
}
public System.Data.Entity.DbSet<Student> Students { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//错误原因
Database.SetInitializer(new DbChange());
Database.Initialize(true);
}
这两个( //错误原因
Database.SetInitializer(new DbChange());
Database.Initialize(true);)同时加入(OnModelCreating()和StudentContext())会报控制器创建错误异常,
如果仅仅在OnModelCreating()中加入这两句会报如下图错误:因此在web中使用code first可以将初始化数据库放在调用的构造方法中。