实体框架表名称约定

Ric*_*d D 5 c# entity-framework

我使用EF 6,有两个简单的POCO类,如下所示:

public class Person
 {
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
 }

public class Company
{
    public int CompanyId { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和我的背景

public class Context : DbContext
{
    public Context() : base("name=codefirst")
    {

    }
    public DbSet<Person> People { get; set; }
    public DbSet<Company> Corporation { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而EF产生的表格: dbo.Companiesdbo.People

我的问题是为什么一个表名是人和其他表名是公司(我知道为什么是复数).我的意思是,一个表使用属性名称,另一个表使用类名?

提前致谢!

在此输入图像描述

Gim*_*ock 5

两者都使用其类名进行映射
可能使您感到困惑的一个是Person类的映射。这是EF多元化规则之一,因为人是人的复数形式(意味着一个以上的人),因此EF将其映射为人。另一方面,它只是将Company类映射为Companies。

OnModelCreating()如果不喜欢,可以通过在方法中添加以下代码来关闭EF复数约定:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();