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

标签 c# asp.net asp.net-mvc

我对此很陌生,我的问题非常特殊。我在谷歌上搜索了很多,但没能找到任何相关信息。我在数据库中有两个属性,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/

相关文章:

c# - 重构 ASP.NET——两个控件都继承自 Web.UI.UserControl 并具有相同的属性

javascript - RadioButtonFor 加载页面后不调用 onchange

c# - NullReferenceException MVC4 C# 初学者最有可能失败

c# - Npgsql C# throwing Operation is not valid 由于对象的当前状态突然

c# - 如何以编程方式备份​​ SQL Server 数据库(mdf)以便以后按行导入?

c# - 给定单个数据库表,是否可以在 sql 查询中生成报告矩阵作为结果集

asp.net - Bootstrap 3 网格样式对齐问题

asp.net-mvc - F# 支持最新的 asp.net 5 和 MVC6

c# - JSON 文件发布到 azure 后无法工作,但在本地可以正常工作

c# - 如何使用 asternet 从 Asterisk 获取变量值