[英]MVC4 EF code first database initialization incomplete in production
我使用MVC4创建了一个网站,并将框架更新为4.5.1。
一切都在开发阶段完美运作。 我首先使用实体框架代码启用了迁移,并创建了一个迁移“Init”。
我有简单的会员资格。 当我删除本地数据库并启动应用程序时,我完全创建了所有表。
但是,当我在生产服务器上部署(FTP)时,我只有一个表的子集。
这是在我尝试这个之后在Global.asax.cs中完成的
internal void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<GlobalDbContext, Migrations.Configuration>("DefaultConnection"));
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
using (var context = new GlobalDbContext())
{
if (!context.Database.Exists())
{
// Register the SimpleMembership database without Entity Framework migration schema
//((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
context.Database.Create();
}
////context.Database.Initialize(true);
//context.Database.Delete();
//context.Database.Create();
}
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "Username", autoCreateTables: true);
}
显然,它是context.Database.Create();
在生产中表现不同。
我已经部署了一个完整的MVC4应用程序和一个完整的MVC5应用程序。 但这是我第一次将MVC4应用程序部署到.net 4.5.1(我不知道是否有帮助)。
任何想法?
编辑(添加DbContext示例)
public class GlobalDbContext:DbContext {public GlobalDbContext():base(“DefaultConnection”){}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<GlobalDbContext>
(
new CreateDatabaseIfNotExists<GlobalDbContext>()
);
//using model builder here
base.OnModelCreating(modelBuilder);
}
public DbSet<Patient> dbSet1 { get; set; }
[***]
}
要验证的项目列表:
生产服务器上的sql server的权限是否相同?
在create database调用周围添加一个try catch
有关迁移的其他问题,请参阅以下内容
确保应用程序用于登录SQL Server的帐户具有在数据库服务器上创建对象所需的权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.