【问题标题】:Does EF Core provide a way to map a get-only property to databaseEF Core 是否提供了一种将仅获取属性映射到数据库的方法
【发布时间】:2018-09-07 19:31:43
【问题描述】:

我有一个客户端对象,它有一个计算值Fullname,我想将它存储到数据库中,但不希望/不需要它从数据库返回,因为它是从其他字段计算的。

public class Client
{
   public int Id {get; set;}
   public string Firstname {get; set;}
   public string Middlename {get; set;}
   public string Lastname {get; set;}

   public string Fullname => this.FormatName(NameFormats.LastFirst);
}

在这种情况下,我希望它在数据库中,以便报告用户可以使用全名进行打印/列出,而无需计算它。但我不需要将它带回我的域模型中,因为它始终是从已经从数据库中引入的 FirstnameLastname 计算出来的。

是否可以在具有 EF Core 的实体上定义“仅存储到数据库”属性?

【问题讨论】:

标签: ef-core-2.1


【解决方案1】:

EF Core 团队on GitHub 的解决方案如下:

我们在 #7946 中对此进行了讨论,并决定在这种情况下使用空的 setter 是合理的。例如:

public string Fullname
{
    get => $"{this.Lastname}, {this.Firstname}";
    private set { }
}

【讨论】:

  • 这看起来很hacky。我希望他们能在某个时候改善这一点。非常感谢,也解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2020-06-25
  • 1970-01-01
  • 2023-02-23
  • 2015-11-01
  • 1970-01-01
相关资源
最近更新 更多