我正在尝试基于现有的MySQL数据库创建EF模型。创建实体后,我使用:
对其进行映射[Table("databaseName.tableName")]
或:
modelBuilder.Entity<Lang>().ToTable("tableName")
中的[OnModelCreating
。
我遇到的问题是表名可能具有意外的prefix。我想做的是在不知道前缀的情况下,搜索数据库中的任何表:
(类似)EndsWith("tableName")
使用它,或:
与Regex
匹配的名称。
这可行吗?另一种选择是向用户询问特定于他/她的数据库的TablePrefix并使用它(modelBuilder.Entity<Lang>().ToTable(prefix + "tableName"
),但这很不方便。由于前缀是唯一可以在数据库之间更改的东西,因此能够通过其名称检测表确实很有帮助。
您无法在OnModelCreating中查询数据库,但是可以使用连接字符串打开与数据库的ADO.NET连接,并运行查询以检索表名并在实体类型和表名之间构造映射。