gpt4 book ai didi

c# - 在 Entity Framework 6 中返回时更改属性名称

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:39 25 4
gpt4 key购买 nike

我正在将 Web API 2 与 EF 6 DB 优先方法结合使用。在获取实体时,我想更改属性名称。

例如:我有一个 Employee 实体,其中一个属性称为 EmployeeJoiningDate,与数据库列名称相同。

在获取 context.Employee 时,我想将 EmployeeJoiningDateproperty“重命名”为 EmpJd(在序列化期间)。

有没有办法在不创建另一个类并映射到那个新类的情况下实现这一点?有没有属性?

最佳答案

如果数据库字段名为“EmployeeJoiningDate”,但您希望实体中的属性为 EmpJd:

[Column("EmployeeJoiningDate")]
public string EmpJd { get; set; }

注意 Column 属性中的名称需要与表中的名称相匹配,没有多余的空格等。

这假定表中的数据类型也是 NVarchar 类型。如果数据表中的数据类型是 DateTime,那么我会推荐一种不同的方法...

public DateTime EmployeeJoiningDate { get; set; }

[NotMapped]
public string EmpJd
{
get { return EmployeeJoiningDate.ToString(); } // Optionally add format string.
set
{
DateTime result;
if (!DateTime.TryParse(value, out result))
throw new ArgumentException("The provided EmpJd was not recognized as a date.");
EmployeeJoiningDate = result;
}
}

这为您提供了一个 EmpJd 字段,您可以将其用于您的代码。一个重要的细节是,在这种情况下,如果您想对您的实体使用 Linq 等,请在 Linq 表达式中使用 EmployeeJoiningDate 属性。 EF 不会将 EmpJd 解析为 EmployeeJoiningDate。如果您只想将日期显示为字符串,您可以省略 EmpJd 属性的 Setter。

关于c# - 在 Entity Framework 6 中返回时更改属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45076013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com