【问题标题】:How to remove prefix from EF Core owned type column names如何从 EF Core 拥有的类型列名称中删除前缀
【发布时间】:2021-10-04 08:22:13
【问题描述】:

我有这样的实体

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

在哪里CompanyMainDetails

public sealed class CompanyMainDetails
{  
    public string Name { get; private set; }
}

还有这个 EF Core 配置:

builder
    .OwnsOne(company => company.MainDetails);

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

builder.OwnsOne(
    company => company.MainDetails,
    config => 
    {
        config
            .Property(mainDetail => mainDetail.Name)
            .HasColumnName("Name");
    });

但现在该列生成为Company_Name

有没有办法实现我的需要?

【问题讨论】:

  • 您总是可以放弃 EF 并自己编写 O/RM ^_^ 我什至不是在开玩笑。您将对数据库和数据访问层进行更精细的控制。我不知道如何解决您在 EF 中提到的问题,但是这种类型的事情以及许多其他问题是导致我过去放弃 EF 的原因。

标签: c# entity-framework-core .net-5


【解决方案1】:

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

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; }
}

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

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2021-11-23
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多