ライブラリを管理するための単純なMVCアプリケーションを構築しています。開発目的のために、私はEFにモデルを変更するたびにデータベースをドロップして再作成し、いくつかのサンプルデータを入力するようにしたいと思います。この瞬間、私はイニシャライザを動作させるのに苦労します。初期化子クラスは、次のようになります。カスタムデータベース初期化ツールを使用できません
public class LibraryInitializer : DropCreateDatabaseIfModelChanges<LibraryContext>
{
protected override void Seed(LibraryContext context)
{
// sample data to be writted to the DB
}
}
とコンテキスト・クラスは次のようになります。この時点で
public class LibraryContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Book> Books { get; set; }
public LibraryContext()
{
Database.SetInitializer<LibraryContext>(new LibraryInitializer());
}
}
私は次のエラーを取得する:
利用できる多くのガイドに基づいてMember 'Database.SetInitializer(IDatabaseInitializer)' cannot be accessed with an instance reference; qualify it with a type name instead
Web上では、これがイニシャライザを使用する方法ですが、なぜこのエラーが発生するのかわかりません。 どんな助けも大いにアピールされます。 ありがとうございました!
答えをありがとう、それは問題をかなり解決しました。さて、初期化子のビルド方法を説明するチュートリアルやブログ記事をチェックすると(特定のWebサイトを指し示したくない)、実際には 'System.Data.Entity.Database.SetInitializer .. '名前。それは私のコードでそれを使用するように強制するものか、それともどこにも言及されていない "誰もがそれを知っているべきである"ということですか? – Dandry
私は最近同じ問題を抱えていましたが、私はMyService.Databaseのように見える名前空間を引き起こしたデータベースというフォルダに自分のデータベースクラスを持っていました。その場合、System.Data.Entity.Databaseを完全に指定する必要がありました。それ以外の場合は、そうする必要はありません。 – Anansi
System.Data.Entityを使用して追加する必要があります。 DbContextクラスのDatabaseプロパティを使用しようとします。クラスが見つからないためです。 – DevilSuichiro