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。将存储机制与属性分开可以使逻辑更加灵活。因此,首先应该避免这种硬编码的依赖关系。这样,您还可以决定收集多个属性更改,并将这些更改存储在一个批中。或者在将来,您可能不得不在其他地方使用设置逻辑(您没有访问数据库的权限)。