Dbset命名规则和类命名规则

时间:2014-02-14 18:09:33

标签: c# entity-framework dbset

我有一个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令我困惑

1 个答案:

答案 0 :(得分:1)

在第一种情况下,它默认会查找James_BobRelations;你可以改变这种行为:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<James_BobRelation>().MapSingleType().ToTable("TableNameHere");
}

基本上,默认行为是复数对象并从中推断出表名。 IE它将为名为Sausage的类推断出Sausages的名称。