maz*_*shi 33 entity-framework visual-studio-2010 sql-server-2008-r2 ef-code-first asp.net-mvc-3
使用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; }
}
}
Run Code Online (Sandbox Code Playgroud)
它还具有以下数据库上下文类:
namespace RIS.Models
{
public class RIS_DB : DbContext
{
public DbSet<Person> People { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
我已将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"/>
Run Code Online (Sandbox Code Playgroud)
如果Global.asax.cs文件中不存在,则还有一个显式指令来创建数据库:
protected void Application_Start()
{
Database.SetInitializer(new CreateDatabaseIfNotExists<RIS_DB>());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)
maz*_*shi 67
在MSDN论坛上四处询问,并得到了满意的答复:
实体框架在首次访问之前不会创建数据库.当前代码块Application_Start()
仅指定在首次访问期间创建数据库时要使用的策略.
要在启动时触发创建数据库,必须创建数据库上下文的实例,并且context.Database.Initialize(true)
必须调用该实例.
归档时间: |
|
查看次数: |
32349 次 |
最近记录: |