c#EF在SQL Compact上生成错误的表名

本文关键字:错误 SQL Compact c#EF | 更新日期: 2023-09-27 18:24:22

使用最新的EF和EF SQL Compact(6.1.1)与SQL(4.0)….

通过Linqpad注意到,通过初始化器(DropCreateDatabaseAlways)生成的表名与我在table属性中指定的不同。在开发时,我创建了一个嵌入式数据库用于测试目的,但在其他环境中,数据库将是遗留的,这意味着表名必须匹配。

如果在实体上有[Table("p_Brand_Visited")],则生成的表名为p_Brand_Visiteds。第一个字母大写,名称变为复数。不确定为什么不尊重Table属性。也许是SqlCe问题?

尝试通过OnModelCreating事件删除复数:

 protected override void OnModelCreating(DbModelBuilder modelBuilder) {
   modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
 }

没有效果。尝试设置表名:

 protected override void OnModelCreating(DbModelBuilder modelBuilder) {
   modelBuilder.Entity<BrandVisited>().ToTable("p_Brand_Visited");
 }

没有效果。还有其他建议吗?调试方法?

c#EF在SQL Compact上生成错误的表名

这是Linqpad和复数选项的问题。一旦这些被禁用,一切都很好。