Entity Framework表名默认自动变为复数形式的解决方法

直接用类映射数据库表结构,使用类来操作表。结果提示以下错误:


查遍代码页没有找到有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; }

    }

}