私は EntityFramework 5.0 を使用しており、既に存在するデータベースがありますが、独自のモデルを定義したいので、次のようにします。
pubilc class MyContext : DbContext
{
public MyContext()
{
Whatevers = Set<Whatever>();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//.. Deal with all the mappings between the real database and
// my beautiful model
}
pubilc DbSet<Whatever> Whatevers { get; private set;}
}
public class Whatever
{
//... you get the gist...
}
アプリケーションを初めて起動したときに、次の 2 つのクエリを実行しようとすることを除けば、問題なく動作します。
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [GroupBy1]
SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[ModelHash] AS [ModelHash]
FROM [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC
現在、これらのテーブルはどちらも存在しないため、エラーが発生します。エラーを発生させたくありません (これはしばらく前から存在するデータベースであり、私はデータベースの大君主ではなく、単なるアプリケーション開発者です)。
この質問を見ました: Entity Framework 4.3.1 で移行を無効にする方法は? これを示唆した:
Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists());
しかし、MSDN によると、少なくともバージョン 5.0 ではそれがデフォルトです。
MSDN には次のようなものもあります。
- DropCreateDatabaseAlways
- DropCreateDatabaseIfModelChanges
- MigrateDatabaseToLatestVersion
しかし、どれも私が望むようには聞こえません。
「データベースをそのままにしておきます-エンティティフレームワークについては知らず、正直なところ、それについて知りたくありません」IDatabaseInitializer実装はどこにありますか?
作ることは可能ですか?
または、微調整できる他のプロパティがありますかAutomaticMigrationsEnabled
?質問への回答に記載されているプロパティがどこにも見つかりませんでした。
あるいは、データベースにこれらのテーブルが必要な決定的な理由があるのでしょうか?