0

我正在尝试部署我的第一个 MVC 网站(使用 arvixe 作为我的主机),但我遇到了数据库问题。当我在本地开发并更改模型上的任何内容(映射到我的 DbContext)时,它会清除我的数据库并创建一个新数据库(如果存在),或者只是为我的实体完全创建一个数据库。

话虽如此,我的问题是,当我部署它时,部署了包含所有控制器的项目,并且我可以访问我的登录页面,但是一旦我尝试登录(这会触发在我的本地创建数据库),它只会给出我一个错误,不会尝试创建数据库。

不太确定我在这些步骤中遗漏了什么,我是否应该至少在没有记录的情况下创建数据库?

4

3 回答 3

0

这听起来像是权限问题。您在服务器上运行的帐户很可能没有 DROP/CREATE 表的权限。

部署到生产/托管服务器时,我通常不依赖 EF 来创建我的架构。我将我的 CREATE tabel 脚本从我的 DEV 环境复制到 PRODUCTION 并确保我的 DBCONTEXT 初始化代码设置为不进行任何更改。

于 2012-05-31T06:53:11.157 回答
0

尝试这个:

using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Data.Entity.ModelConfiguration.Conventions;
public class YourDbContext: DbContext
{
    public YourDbContext()
        : base("name = YourConnection")
    {
        Database.SetInitializer<YourDbContext>(new MigrateDatabaseToLatestVersion<YourDbContext, YourMigrationsConfiguration>());
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //Your Building Rules
    }

    #region DbSets
    public DbSet<YourTable> YourTables { get; set; }
    #endregion
}

public class YourMigrationsConfiguration : DbMigrationsConfiguration<YourDbContext>
{
    public YourMigrationsConfiguration()
        : base()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }

    protected override void Seed(YourDbContext context)
    {
        /*sql script*/
    }
}
于 2012-05-31T06:55:33.237 回答
0

因此,显然,我可以在我的主机本地执行我的应用程序执行相同操作的唯一方法是拥有系统管理员权限/帐户以删除 dbase。这不会发生......永远......所以我决定只生成一个脚本并远程运行它。我不确定一旦我开始对表进行更改和对数据进行维护,它将如何影响我的数据库。祝我好运。

哦,顺便说一句,这是我的脚本来源

https://stackoverflow.com/a/10760985/639713

于 2012-05-31T19:38:40.757 回答