0

最初の MVC Web サイト (arvixe をホストとして使用) をデプロイしようとしていますが、データベースに問題があります。ローカルで開発し、モデル (DbContext にマップされている) で何かを変更すると、データベースが消去されて新しいデータベースが作成されるか (存在する場合)、エンティティのデータベースが完全に作成されます。

そうは言っても、私の問題は、それをデプロイするときです。すべてのコントローラーを含むプロジェクトがデプロイされ、ランディングページにアクセスできますが、ログインしようとすると(ローカルでデータベースの作成がトリガーされます)、エラーが発生し、データベースを作成しようとしませんでした。

手順で何が欠けているのかよくわかりません。少なくとも最初にレコードなしでデータベースを作成する必要がありますか?

4

3 に答える 3

0

これは権限の問題のようです。サーバーで実行しているアカウントには、DROP/CREATE テーブルへのアクセス許可がない可能性があります。

本番/ホストされたサーバーにデプロイするとき、私は通常、スキーマを作成するために EF に依存しません。CREATE テーブル スクリプトを 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を削除するためのsysadmin権限/アカウントを持つことです。これは決して起こっていません..だから、スクリプトを生成してリモートで実行することにしました。テーブルの変更とデータのメンテナンスを開始すると、データベースにどのような影響があるかわかりません。幸運を祈ります。

ところで、これがスクリプトのソースです

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

于 2012-05-31T19:38:40.757 に答える