C# 更改属性值时,如何更新数据库值?

C# 更改属性值时,如何更新数据库值?,c#,C#,我有以下代码: public static class Settings { public static int Trk5 { get; set; } } Settings.Trk5 = 2; db2.Update(new Setting { "Trk5", Value = val.ToString() }); 以某种方式将数据库的更新与变量的设置结合起来是一个好主意吗?如果是这样,我该怎么做 我可以将db2.Update合并到集合中吗;不知何故?您需要在属性中调用Update方法

我有以下代码:

public static class Settings
{
    public static int Trk5 { get; set; }
}

Settings.Trk5 = 2;
db2.Update(new Setting { "Trk5", Value = val.ToString() });
以某种方式将数据库的更新与变量的设置结合起来是一个好主意吗?如果是这样,我该怎么做


我可以将db2.Update合并到集合中吗;不知何故?

您需要在属性中调用
Update
方法

如果您希望它自动应用到每一个属性,请考虑以下解决方案:


  • 您可以让属性在其setter中保存自己(如@Alsein)。为此,您需要将自动属性转换为完整属性

    也许这会奏效:

    public static class Settings
    {
        private static int trk5;
    
        public static int Trk5
        {
            get { return trk5; }
            set
            {
                if (trk5 != value)
                {
                    trk5 = value;
                    db2.Update(new Setting { "Trk5", Value = value.ToString() });
                }
            }
        }
    }
    
    Settings.Trk5 = 2;
    

    然而,我怀疑您的
    db2.Update
    调用是否能以这种方式工作。您正在那里创建一个新的
    设置
    实例,但是您没有为
    “Trk5”
    值指定属性名称…

    您应该记住,(代码的)用户不希望代码除了设置属性之外做任何事。我遇到过太多带有业务逻辑的属性。在这种情况下,如果更新调用很慢,则设置此选项可能会无意中引入性能问题我同意@MatthewEvans。将存储机制与属性分开可以使逻辑更加灵活。因此,首先应该避免这种硬编码的依赖关系。这样,您还可以决定收集多个属性更改,并将这些更改存储在一个批中。或者在将来,您可能不得不在其他地方使用设置逻辑(您没有访问数据库的权限)。