我将继续阅读有关EF6和Codefirst的本教程。http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net- mvc应用
我开始一个解决方案,只是添加了模型,上下文和初始化程序
namespace TestContoso.DAL
{
public class SchoolContext : DbContext
{
public SchoolContext()
: base("Name=SchoolContextDB")
{
}
public DbSet<Student> Students { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
public DbSet<Course> Courses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
并创建了一个虚拟的Home Controller和Index视图。
namespace TestContoso.Controllers
{
public class HomeController : Controller
{
private SchoolContext db = new SchoolContext();
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
}
}
我还设置了连接字符串,并在web.config中设置了初始化程序
<entityFramework>
<contexts>
<context type="TestContoso.DAL.SchoolContext, TestContoso">
<databaseInitializer type="TestContoso.DAL.SchoolInit, TestContoso"/>
</context>
</contexts>
当我运行该解决方案时,我期望数据库将被创建,但是我注意到OnModelCreating事件从不触发,因此从不创建该数据库。为什么不创建数据库?我将如何引发“代码优先”迁移?
仅当有一些查询该模型的查询时才触发OnModelCreating事件,以测试我是否刚刚在Index控制器中添加了一个伪查询,并且它起作用。
public class HomeController : Controller
{
private SchoolContext db = new SchoolContext();
//
// GET: /Home/
public ActionResult Index()
{
var students = from s in db.Students
select s;
return View();
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句