1

モデルからデータベースを生成しようとしています。他の質問/チュートリアルで見つけることができるすべてをセットアップしたと思いますが、データベースが生成されていないようです.

環境:

public class DatabaseContext : DbContext {
    public DatabaseContext()
        : base("Name=DatabaseContext") {
    }

    public DbSet<Show> Shows { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Configurations.Add(new ShowMap());
    }
}

マッピング:

public class ShowMap : EntityTypeConfiguration<Show> {
    public ShowMap() {
        ToTable("Shows");

        // Key
        // Properties
    }
}

初期化子:

public class DatabaseInitializer : DropCreateDatabaseAlways<DatabaseContext> {
    private List<Show> _shows = new List<Show>();

    protected override void Seed(DatabaseContext context) {
        LoadShows();
        _shows.ForEach(s => context.Shows.Add(s));
    }

    private void LoadShows() {
        // Creating models
    }
}

Global.asax:

Database.SetInitializer(new DatabaseInitializer());

Web.config:

<add name="DatabaseContext" connectionString="Data Source=JEROEN-DESKTOP\SQLEXPRESS;Initial Catalog=NoName;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

テーブルを追加せずにスキーマ「NoName」を手動で作成しました。プログラムの実行は問題なく行われますが、テーブルが生成されません。VS SQL サーバー オブジェクト エクスプローラーで接続を確認すると、localdb と SQLEXPRESS の両方に関連するテーブルが含まれていないことがわかります。

注意すべきもう 1 つの点: nuget を使用してプロジェクトに EntityFramework を追加しましたが、任意のファイル/フォルダーを右クリックしても、コンテキスト メニューに EntityFramework が表示されません。これが問題でしょうか?プロジェクトから EF を削除して追加しましたが、まだ表示されません。ただし、参照フォルダーには「EntityFramework」エントリがあります。

4

1 に答える 1

2

私はいくつかのことを調べ始めました。許可はその1つです。委任呼び出し元が実際にこのデータベースで作成できることを確認してください。また、デバッグ中に EF がデータベースにアクセスしていることを確認します: base("name=DatabaseContext")。データベースにアクセスできる場合、IntelliTrace は作成中のステートメントを出力します。

また、移行が有効になっていることを確認します。Nuget Package Manager コンソールを使用して、Enable-Migrations を実行します。完全なチュートリアルは、Building an Initial Model & Databaseです。

于 2013-06-09T16:50:58.490 に答える