我有一个Dbset声明如下:
public DbSet<James_BobRelation> James_Bobs { get; set; }
我的Sql表名为James_Bobs
持有数据的类名为James_BobRelation
当在存储库中调用它时,这不起作用:
EFDbContext context = new EFDbContext();
context.James_Bobs;
// It thinks the table is called James_BobRelation instead?
然而当我将类名更改为James_Bobs时,它确实有用吗?
规则是什么?
此外,这让我很困惑......我有一个名为Sausages
DbSet就像这样:
public DbSet<Sausage> Sausages { get; set; }
当我打电话给实际有效的香肠时!即使这个案例中的类是Sausage ...... 如果它认为可以,实体框架会添加's'吗? 这是SOO令我困惑
答案 0 :(得分:1)
在第一种情况下,它默认会查找James_BobRelations;你可以改变这种行为:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<James_BobRelation>().MapSingleType().ToTable("TableNameHere");
}
基本上,默认行为是复数对象并从中推断出表名。 IE它将为名为Sausage的类推断出Sausages的名称。