1

MVC を使用して C# でユーザー プロファイルの編集ページを作成しています。この種のページと同様に、データベースから情報を取得してフォームに表示し、ユーザーがフィールドを好みに合わせて変更できるようにします。

検証後、データをデータベースに送信したいのは明らかですが、ここで何かが発生し、それを理解できませんでした。

プライベート フィールドを介して新しい値を割り当てた場合、データベースには何も送信されません。Property アクセサーを使用した場合、値は送信されます。

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 に答える