Entity Framework表名默认自动变为复数形式的解决方法
- .Net
- 2020-01-16
- 19热度
- 0评论
直接用类映射数据库表结构,使用类来操作表。结果提示以下错误:

查遍代码页没有找到有cities这个关键词,断点分析了一下,是entity自动把表名改成了复数形式(entity大哥我真是给你跪了,变复数这样的属性也搞成标配)
百度查entity表名复数相关网页,最终发现entity有个默认变复数的属性,把这个属性移除掉就ok了。
对应代码如下(OnModelCreating就是移除变复数的默认标配:
using System.Data.Entity;
namespace SportStore.Models.Repository
{
public class EFDbContext: DbContext
{
public DbSet<Cartype> table_cartypes { get; set; }
public DbSet<City> citylist { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
}
}
}
还有一种解决方法:
[Table(Name = "city")]
就是标明该类对应数据的表名),有谁知道为什么的请回复告诉我一下,谢谢:
using System;
using System.Data.Linq.Mapping;
namespace SportStore.Models {
[Table(Name = "city")]
public class City {
public Int64 id { get; set; }
public Int64 provinceid { get; set; }
public string city { get; set; }
public string fword { get; set; }
}
}

鲁ICP备19063141号
鲁公网安备 37010302000824号