Entity Framework での複数のテーブル名の競合
この問題は、MySQL で Entity Framework を使用し、複数名のテーブルを作成しようとすると発生します。
問題:
提供されたコードでは、ビューでは "votes" という名前のテーブルが予期されていますが、Entity Framework は "" という名前のテーブルを作成します。 MySQL で「投票」。この不一致により、「テーブル 'mydb.vote' が存在しません」という例外が発生します。
解決策:
この問題を解決するには、次の手順を実行できます。 take:
-
OnModelCreating の基本コンストラクター呼び出しを削除します:
もともと、基本コンストラクター呼び出しは、複数化を実装するために OnModelCreating で使用されていました。ただし、複数化動作を防ぐために、この呼び出しを削除することをお勧めします。
-
PluralizingTableNameConvention を削除します:
コードには、最初に PluralizingTableNameConvention を削除する行が含まれていました。これは、テーブル名の自動複数形化を防ぐために依然として必要です。
-
既存のデータベースを削除します:
既存のデータベースを削除してから、Entity Framework が新しいデータベースを作成できるようにすることをお勧めします。 1つ。これにより、正しいテーブル名が使用されるようになります。
-
データベース作成権限を確認します:
接続文字列で指定された MySQL ユーザーに、新しいデータベースを作成するための十分な権限があることを確認します。
-
ApplicationStart から複数形を削除します:
コードは元々 DropCreateDatabaseAlways を使用していましたが、これにより複数形が無効になりました。ただし、これは誤って Database.SetInitializer(new DropCreateDatabaseAlways()) として実装されました。代わりに、Database.SetInitializer(new myDBInitializer()) にする必要があります。
これらの変更を実装した後、Entity Framework は MySQL に "votes" テーブルを正しく作成し、テーブル名の競合を解決し、ビューが適切に機能するようにします。
以上がモデルが複数である場合でも、Entity Framework が MySQL に単数のテーブルを作成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。