我有一个现有的MS SqlServer,我想在MVC 4项目中使用Entity Framework Code First方法向其添加新数据库。
首先,几行代码: Global.asax中
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Database.SetInitializer<IncidentData.IncidentContext>(new IncidentData.IncidentDbInitializer());
using (var a = new IncidentData.IncidentContext())
{
a.Database.CreateIfNotExists();
}
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
SqlDependency.Start(ConfigurationManager.ConnectionStrings["IncidentContext"].ConnectionString);
}
protected void Application_End()
{
SqlDependency.Stop(ConfigurationManager.ConnectionStrings["IncidentContext"].ConnectionString);
}
}
IncidentDbInitializer.cs:
public class IncidentDbInitializer : CreateDatabaseIfNotExists<IncidentContext>
{
protected override void Seed(IncidentContext context)
{
base.Seed(context);
// add some data
context.SaveChanges();
}
}
IncidentContext.cs
public class IncidentContext : DbContext
{
public IncidentContext()
: base()
{
}
public DbSet<Incident> Incidents { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//some code
}
}
现在,问题是没有调用种子方法。我认为这是因为我没有配置SQL服务器,因为我曾经让它工作但是很久以前我现在需要准备文档如何设置它。
如何使EF能够创建新数据库?
我试过了:
在这种情况下,正确的做法是什么?我应该为此SQL登录提供什么凭据,以便它可以创建数据库?
据我记得,当我最近上班时,我只是检查了一切,但它确实有效,但现在即便如此也无法完成任务。既然它有效,我认为代码很好,但配置是ekhm flappy:)