我使用MVC4创建了一个网站,并将框架更新为4.5.1。
在开发阶段,一切都很完美。我首先使用实体框架代码启用了迁移,并创建了一个迁移“Init”。
我的会员资格很简单。当我删除本地数据库并启动应用程序时,我完全创建了所有表。
但是,当我在生产服务器上部署(FTP)时,我只有一个表的子集。
这是我尝试this
后在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; }
[***]
}
答案 0 :(得分:2)
要验证的项目列表:
生产服务器上的sql server的权限是否相同?
在创建数据库调用
有关迁移的其他问题,请参阅以下内容
EntityFramework 6.0 CreateDatabaseIfNotExists Code first to create database
答案 1 :(得分:0)
确保应用程序用于登录SQL Server的帐户具有在数据库服务器上创建对象所需的权限。