1

我有一个像这样声明的 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; }

当我呼吁真正有效的香肠时!即使在这种情况下的类是香肠......实体框架是否会添加“s”,如果它认为可以吗?这让我很困惑

4

1 回答 1

1

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

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

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

于 2014-02-14T18:23:10.147 回答