12

私は Entity Framework (現在 EF6 ベータ版を使用) を学んでおり、既存のデータベースでコード ファースト パターンを使用しています。エンティティとDbContextクラスは、T4 テンプレートを使用して自動的に作成されます。

DbContext実行時にデータベースに何かを作成/変更しないようにしたいと思います。

どうやってやるの?

4

3 に答える 3

3

コンテキストの初期化子を に設定しますnull

これにより、アプリケーションの起動時にデータベースが既存の状態のままになるはずです。

dbContext クラスやデータベース スキーマを変更した後にアプリケーションを実行しようとすると、例外が発生することに注意してください。これは、データベース スキーマがコンテキストが期待するものと一致しなくなるためです。

于 2013-09-18T04:07:03.273 に答える
0

DBFirst と EF 6.1 でこの問題が発生し、EntityName に基づいて新しいテーブルが作成されました。そこで、OnModelCreating 仮想メソッドを変更してテーブルをマップしました。

したがって、EntityName の名前が MyStuffs である場合、デフォルトでは EnitityNames は複数形になっているため、EF 生成中に選択を解除するオプションがあります。私の場合、ウィザードは複数形のテーブルを生成していました。

public class MyContext: DbContext
{
    public MyContext()
        : base("name=MyEntityConnectionName")
    {
    }
    public MyContext(string connectionString)
        : base(connectionString)
    {
    }
    #region methods

    public static MyContext Create()
    {
        return new MyContext();
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        // Map Entities to their tables.
        modelBuilder.Entity<MyModel>().ToTable("MyStuff"); //prevent a new table from being added since we added a mapping
    }

    #endregion
    public virtual DbSet<MyModel> MyEntities{ get; set; }
}
于 2014-11-01T01:04:30.237 に答える