一直在使用 ASP.NET MVC 3 项目尝试 Entity Framework 4.1 的 Code First 功能。
但是,数据库 (SQL Server 2008 R2) 不会在应用程序启动时自动创建表映射。关于如何让它这样做有什么想法吗?
该项目只有一个POCO:
namespace RIS.Models
{
public class Person
{
[Key]
public virtual string NRIC { get; protected set; }
public virtual string FirstName { get; protected set; }
public virtual string MiddleName { get; protected set; }
public virtual string LastName { get; protected set; }
}
}
它还具有以下数据库上下文类:
namespace RIS.Models
{
public class RIS_DB : DbContext
{
public DbSet<Person> People { get; set; }
}
}
我已将 SQL 连接字符串添加到全局 web.config 文件中,如下所示:
<add name="RIS_DB" connectionString="Data Source=URAHARA-PC;Initial Catalog=RIS_DB;
Integrated Security=SSPI;Pooling=False" providerName="System.Data.SqlClient"/>
如果 Global.asax.cs 文件中不存在数据库,则还有一条显式指令用于创建数据库:
protected void Application_Start()
{
Database.SetInitializer(new CreateDatabaseIfNotExists<RIS_DB>());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
转而在MSDN论坛上询问,得到了满意的答案:
实体框架在第一次访问之前不会创建数据库。当前代码块位于Application_Start()
仅指定首次访问期间创建数据库时要使用的策略。
要在启动时触发数据库的创建,必须创建数据库上下文的实例,并且context.Database.Initialize(true)
必须被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)