【问题标题】:C# Update Modified properties in databaseC# 更新数据库中的修改属性
【发布时间】:2018-03-26 20:14:05
【问题描述】:

我有一个类有很多可以从外部修改的属性。在设置完所有属性后,我只想更新数据库中修改后的字段,那么有效的方法是什么?

例如。让我们说下面是我的课

public class SomeClass {
    private int field1;
    private string field2;
    private string field3;
    private byte field4;

    public int Field1 {
        get { return field1; }
        set { field1 = value; }
    }

    public string Field2 {
        get { return field2; }
        set { field2 = value; }
    }

    public byte Field4 {
        get { return field4; }
        set { field4 = value; }
    }

    public string Field3 {
        get { return field3; }
        set { field3 = value; }
    }

    public SomeClass() { }

    public bool FillClassVariablesWithCurrentDatabaseValue() {
        //Fill the class variables with current database values
    }

    public bool UpdateModifiedFields() {
        //Only update the modified fields in database
    }
}

现在要知道该字段是否已更新,我必须在类中添加许多布尔变量,如下所示

public class SomeClass {
    private int field1;
    private string field2;
    private string field3;
    private byte field4;

    private bool field1Updated;
    private bool field2Updated;
    private bool field3Updated;
    private bool field4Updated;

    public int Field1 {
        get { return field1; }
        set {
            if (field1 != value) {
                field1 = value;
                field1Updated = true;
            }
        }
    }

    public string Field2 {
        get { return field2; }
        set {
            if (field2 != value) {
                field2 = value;
                field2Updated = true;
            }
        }
    }

    public byte Field4 {
        get { return field4; }
        set {
            if (field4 != value) {
                field4 = value;
                field4Updated = true;
            }
        }
    }

    public string Field3 {
        get { return field3; }
        set {
            if (field3 != value) {
                field3 = value;
                field3Updated = true;
            }
        }
    }

    public SomeClass() { }

    public bool FillClassVariablesWithCurrentDatabaseValue() {
        //Fill the class variables with current database values
    }

    public bool UpdateModifiedFields() {
        //Only update the modified fields in database
        string parameters = string.Empty;
        if (field1Updated)
            parameters += "field1=@field1";
        if (field2Updated)
            parameters += "field2=@field2";
        if (field3Updated)
            parameters += "field3=@field3";
        if (field4Updated)
            parameters += "field4=@field4";

        //code to update these fields
    }
}

但是由于我的班级有很多变量,我认为这种方法不是很好。任何建议都会有所帮助。

【问题讨论】:

    标签: c# database class design-patterns sql-update


    【解决方案1】:

    你可以维护一个在一个

    中改变的属性列表
    List<string> updatedProperties;
    

    对于设置器中更改的每个属性,将属性名称添加到您的列表中。最后在 Update 方法中,循环上面的列表来创建你的更新逻辑

    【讨论】:

    • 也想过这种方式,但是为了在SqlCommand中添加参数值,我必须编写switch case,更新代码会变得混乱。
    • 以上减少了变量的数量。如果你想让你的更新方法保持干净,你可以维护一个属性名称到数据库列的映射。
    • 会考虑你的答案,但等待真正酷/真棒技术:)
    猜你喜欢
    • 2021-05-06
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多