如何从 EF Core 拥有的类型列名称中删除前缀

Bas*_*sie 5 c# entity-framework-core .net-5

我有一个这样的实体

public sealed class Company
{
    public CompanyMainDetails MainDetails { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

在哪里CompanyMainDetails

public sealed class CompanyMainDetails
{  
    public string Name { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

这个 EF Core 配置:

builder
    .OwnsOne(company => company.MainDetails);
Run Code Online (Sandbox Code Playgroud)

默认情况下,表中的列名Companies生成为MainDetails_Name,但我希望它只是这样Name,所以我尝试将配置更改为

builder.OwnsOne(
    company => company.MainDetails,
    config => 
    {
        config
            .Property(mainDetail => mainDetail.Name)
            .HasColumnName("Name");
    });
Run Code Online (Sandbox Code Playgroud)

但现在该列生成为Company_Name

有办法实现我所需要的吗?

小智 0

想想你的结构。您可以将定义更改为传统的一对多关系

public sealed class Company
{
    public int Id { get; set; }
    public CompanyMainDetails MainDetails { get; private set; }
}

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

这样,CompanyMainDetails 表上的列将保持相同的名称。