1

我正在使用 MVC 在 C# 中为用户的个人资料创建一个编辑页面。与这类页面一样,我从数据库中获取信息并将其显示在表单中,并让用户根据自己的喜好更改字段。

验证后,我显然想将数据提交回数据库,这就是我无法弄清楚的事情发生的地方。

如果我通过私有字段分配新值,则不会将任何内容提交到数据库,如果我使用属性访问器,则确实会提交值。

public partial class User {
    public static bool Edit(User update) {
        try {
            using (var db = new DataClassesBabysitterDataContext()) {
                User old = db.Users.Single(u => u.Id == update.Id);

                // This works
                // -------------------------------------
                old.Description = update.Description;

                // This does not
                // -------------------------------------
                old._Description = update._Description

                db.SubmitChanges();
            }

            return true;
        }
        catch (Exception e) {
            DBLogger.LogException(e);
            return false;
        }
    }
}

老实说,我不知道为什么这会有所作为?

4

1 回答 1

3

Linq2SQL 使用INotifyPropertyChanged属性设置器中的事件来了解实例已更改。使用新值设置属性会触发事件,因此允许跟踪代码知道它。更改字段不会。

于 2016-01-03T15:56:59.557 回答