EF Core 是否提供了一种将仅获取属性映射到数据库的方法

RHa*_*ris 3 ef-core-2.1

我有一个客户端对象,它有一个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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

RHa*_*ris 9

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

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

public string Fullname
{
    get => $"{this.Lastname}, {this.Firstname}";
    private set { }
}
Run Code Online (Sandbox Code Playgroud)