gpt4 book ai didi

c# - 将属性设置为另一个属性的值

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

我对此很陌生,我的问题非常特殊。我在谷歌上搜索了很多,但没能找到任何相关信息。我在数据库中有两个属性,StartDate 和 StartMonth。 StartDate 是 DateTime 类型,StartMonth 是字符串类型。 (我知道将这两个都保存到数据库中是愚蠢的,但这不是我可以更改的东西,因为我没有这样做的权限。)我的问题是如何在数据库模型中将 StartMonth 设置为等于StartDate 中的月份(因为它是相同的)?相反,这样做的正确方法是什么?非常感谢任何帮助!

需要说明的是,我目前有:

[Table("EMPLOYMENT")]
public class Employment : EntityBase
{
[Column("STARTDATE")]
public DateTime? StartDate { get; set; }

[Column("STARTMONTH")]
public string StartMonth { get; set; }
}

编辑:我尝试了以下方法(我意识到这不是任何建议,但它是由一位同事建议的):

[Table("EMPLOYMENT")]
public class Employment : EntityBase
{
[Column("STARTDATE")]
internal DateTime? StartDateInternal { get; set; }

[Column("STARTMONTH")]
private string StartMonth { get; set; }

[NotMapped]
public DateTime? StartDate
{
get
{
return StartDateInternal;
}
set
{
StartDateInternal = value;
StartMonth = value?.ToString("MMMM");
}
}

具体来说,StartMonth 现在是私有(private)的,StartDate 现在是一个 NotMapped 属性,它设置 StartDateInternal 和 StartMonth 并返回 StartDateInternal 值,并且之前代码中的原始 StartDate 现在命名为 StartDateInternal。虽然我可以看到该值一直正确传递给模型,但它不会设置该值。它总是在数据库中将其设置为 NULL。我不确定为什么,想知道是否有人能明白为什么。

最佳答案

您可以使用支持字段,并从 StartDate 获取月份仅当 StartMonth 值不是放。

private string _startMonth;

[Column("STARTMONTH")]
public string StartMonth
{
get
{
if (string.IsNullOrWhiteSpace(_startMonth) && StartDate.HasValue)
return StartDate.Value.ToString("MMMM");
return _startMonth;
}
set { _startMonth = value; }
}

关于c# - 将属性设置为另一个属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43053990/

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