实体框架中的复数表名称冲突
在 MySQL 中使用实体框架并尝试创建具有复数名称的表时会出现此问题来自单一模型。
问题:
在提供的代码中,视图需要一个名为“votes”的表,但实体框架创建了一个名为“ MySQL 中的投票”。此差异会导致异常“表‘mydb.vote’不存在。”
解决方案:
要解决此问题,可以执行以下步骤: take:
-
移除OnModelCreating中的基础构造函数调用:
原本,OnModelCreating中使用基础构造函数调用来实现复数化。但是,建议删除此调用以防止复数行为。
-
删除 PluralizingTableNameConvention:
代码最初包含一行用于删除 PluralizingTableNameConvention。这仍然是必要的,以防止表名自动复数。
-
删除现有数据库:
建议删除现有数据库,然后允许实体框架创建新数据库一。这可确保使用正确的表名。
-
确保数据库创建权限:
验证连接字符串中指定的 MySQL 用户是否有足够的权限来创建新数据库。
-
从 ApplicationStart 中删除复数:
代码最初使用 DropCreateDatabaseAlways,这禁用了复数。但是,这被错误地实现为 Database.SetInitializer(new DropCreateDatabaseAlways())。相反,它应该是 Database.SetInitializer(new myDBInitializer())。
实现这些更改后,实体框架应该在 MySQL 中正确创建“votes”表,解决表名冲突并允许查看正常运行。
以上是为什么实体框架在 MySQL 中创建单个表,即使我的模型是复数?的详细内容。更多信息请关注PHP中文网其他相关文章!