Entity Framework で開発していたら「PostgresException: 42P01: relation “dbo.HogeTable” does not exist」というエラーがでたので、対処方法をメモしておく。
(1) エラー内容
System.Data.Entity.Infrastructure.DbUpdateException: ‘エントリを更新中にエラーが発生しました。詳細については、内部例外を参照してください。’
1. UpdateException: エントリを更新中にエラーが発生しました。詳細については、内部例外を参照してください。
2. PostgresException: 42P01: relation “dbo.HogeTable” does not exist
(2) 原因
テーブルが存在しない。または、異なるスキーマ名でテーブルを作成した。
(3) 対策
デフォルトのスキーマ名「dbo」から「public」に変更する。
以下の2つがある。
(3-1) Entity の TableAttribute にスキーマ名を設定
1 2 3 |
[Table(“hoge_table”, Schema=”public”)] class HogeTable { |
(3-2) DbContext の関数を継承して定義
1 2 3 4 5 6 |
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.HasDefaultSchema("public"); } |
以上